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 那样工作?

  1. 您需要使用 "/\\/" 而不是 "/\/" 因为 \ 会在 [=31= 中生成 \(单个反斜杠) ] 字符串文字。

    http://php.net/manual/en/language.types.string.php

  2. 为什么要对这种简单的情况使用正则表达式?坚持 str_replace() or strtr():

    echo strtr($str, ['\' => '/']);