php regex用单个替换双反斜杠

时间:2014-01-12 15:43:33

标签: php regex backslash

我不想使用stripslashes(),因为我只想将“\\”替换为“\”。

我尝试了preg_replace("/\\\\/", "\\", '2\\sin(\\pi s)\\Gamma(s)\\zeta(s) = i\\oint_C \\frac{-x^{s-1}}{e^x -1} \\mathrm{d}x');

我的失望归咎于:2\\sin(\\pi s)\\Gamma(s)\\zeta(s) = i\\oint_C \\frac{-x^{s-1}}{e^x -1} \\mathrm{d}x

各种在线正则表达式测试人员表明上述内容应该有效。为什么不呢?

2 个答案:

答案 0 :(得分:8)

首先,正如许多其他人所说的那样,正则表达式对于工作而言可能过于沉重,但是您使用的解决方案应该可以正常工作。

$newstr = preg_replace('/\\\\/', '\\', $mystr);

会给你预期的结果,请注意preg_replace返回一个新的字符串,并且不会修改现有的字符串,这可能就是你要挂起的内容。

在这种情况下,你也可以使用较便宜的str_replace:

$newstr = str_replace('\\\\', '\\', $mystr);

这种方法花费的CPU时间和内存要少得多,因为它不需要为这样的简单任务编译正则表达式。

答案 1 :(得分:7)

你不需要使用正则表达式,使用

$newstr = str_replace("\\\\", "\\", $mystr);

请参阅str_replace docs