preg_replace没有按预期工作替换反斜杠?

时间:2017-02-06 01:55:31

标签: php encoding delimiter pcre

我使用的是this answer中描述的分隔符:

这是我用来演示问题的shell php:

php cli

我在网络项目中使用一个函数来替换路径的命名空间语法,例如:

\org\project\namespace\access

应转换为:

/org/project/namespace/access

但是我尝试了很多方法,有些人提出了以下警告:

  

警告:preg_replace():没有结束分隔符' /'发现于...

我不想表现出来。

上面的警告显示将其用作正则表达式:/\\/

额外:(请查看图片)为什么它会显示错误的编码字符串?

更新:为什么它不能用作this PHP Live Regex

1 个答案:

答案 0 :(得分:2)

  1. 您需要使用"/\\\\/"而不是"/\\/",因为\\会在PHP字符串文字中产生\(单个反斜杠)。

    请参阅http://php.net/manual/en/language.types.string.php

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

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