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