簡體   English   中英

如何使用PHP刪除轉義的正斜杠?

[英]How to remove escaped forward slash using php?

我正在使用Google Drive API,而我獲得的refresh_token有一個轉義正斜杠。 雖然這應該是有效的JSON,但API在調用refreshToken()時不會接受它。 我試圖使用preg_replace刪除反斜杠:

$access_token = "1\/MgotwOvbwZN9MVxH5PrLR2cpvX1EJl8omgYdA9rrjx8";
$access_token = preg_replace('/\\\//', '/', $access_token);

我想返回的字符串是:

"1/MgotwOvbwZN9MVxH5PrLR2cpvX1EJl8omgYdA9rrjx8";

我嘗試了各種表達式,但要么不刪除反斜杠,要么返回空字符串。 請注意,我不想刪除所有反斜杠,只刪除正斜杠的反斜杠。

避免正則表達式,只需使用str_replace

$access_token = "1\/MgotwOvbwZN9MVxH5PrLR2cpvX1EJl8omgYdA9rrjx8";
$access_token = str_replace( '\/', '/', $access_token );
//=> 1/MgotwOvbwZN9MVxH5PrLR2cpvX1EJl8omgYdA9rrjx8

嗯,有一個標准的功能就是這樣: stripslashes

所以請避免使用正則表達式,str_replace等。

這很簡單:

$access_token = stripslashes($access_token);

您可以使用不同的分隔符。 在這里,我選擇使用~作為分隔符而不是/

$access_token = "1\/MgotwOvbwZN9MVxH5PrLR2cpvX1EJl8omgYdA9rrjx8";
$access_token = preg_replace('~\\\/~', '/', $access_token);

print $access_token;

返回:

1/MgotwOvbwZN9MVxH5PrLR2cpvX1EJl8omgYdA9rrjx8
<?php
$access_token = "1\/MgotwOvbwZN9MVxH5PrLR2cpvX1EJl8omgYdA9rrjx8";
echo str_replace("\\","",$access_token);
?>

輸出:

1 / MgotwOvbwZN9MVxH5PrLR2cpvX1EJl8omgYdA9rrjx8

這對你有用:

$access_token = preg_replace('|\\\\|', '', $access_token);

1\\\\/Mg\\otw\\\\\\/Btow這樣的字符串會發生什么?

如果你的字符串使用雙引號插值轉義,那么一個簡單的find \\/ replace /將不起作用。

您必須將此用於特定的non-\\轉義字符: '~(?<!\\\\\\)((?:\\\\\\\\\\\\\\)*)\\\\\\(/)~'

查找 - (?<!\\\\)((?:\\\\\\\\)*)\\\\(/)
替換 - $1$2

這適用於我(使用負向前瞻):

$pattern = "/(?!\/)[\w\s]+/"
preg_match($pattern, $this->name,$matches)
$this->name = $matches[0]

之前的名字:WOLVERINE WORLD WIDE INC / DE /

之后的名字:WOLVERINE WORLD WIDE INC DE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM