[英]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.