preg_replace 没有按预期工作替换反斜杠?
preg_replace not working as expected replacing backslashes?
我使用的是 this answer:
中描述的分隔符
这是shell php我用来演示问题的:
我在 Web 项目上使用一个函数来替换路径的命名空间语法,例如:
\org\project\namespace\access
应转换为:
/org/project/namespace/access
但是我尝试了很多方法,有些方法抛出了以下警告:
Warning: preg_replace(): No ending delimiter '/' found in...
我不想展示。
上面的警告显示将其用作正则表达式时:/\/
额外:(请看图片)为什么它显示错误的编码字符串?
更新: 为什么它不像 this PHP Live Regex 那样工作?
您需要使用 "/\\/"
而不是 "/\/"
因为 \
会在 [=31= 中生成 \
(单个反斜杠) ] 字符串文字。
为什么要对这种简单的情况使用正则表达式?坚持 str_replace()
or strtr()
:
echo strtr($str, ['\' => '/']);
我使用的是 this answer:
中描述的分隔符这是shell php我用来演示问题的:
我在 Web 项目上使用一个函数来替换路径的命名空间语法,例如:
\org\project\namespace\access
应转换为:
/org/project/namespace/access
但是我尝试了很多方法,有些方法抛出了以下警告:
Warning: preg_replace(): No ending delimiter '/' found in...
我不想展示。
上面的警告显示将其用作正则表达式时:/\/
额外:(请看图片)为什么它显示错误的编码字符串?
更新: 为什么它不像 this PHP Live Regex 那样工作?
您需要使用
"/\\/"
而不是"/\/"
因为\
会在 [=31= 中生成\
(单个反斜杠) ] 字符串文字。为什么要对这种简单的情况使用正则表达式?坚持
str_replace()
orstrtr()
:echo strtr($str, ['\' => '/']);