我不想使用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
各种在线正则表达式测试人员表明上述内容应该有效。为什么不呢?
答案 0 :(得分:8)
首先,正如许多其他人所说的那样,正则表达式对于工作而言可能过于沉重,但是您使用的解决方案应该可以正常工作。
$newstr = preg_replace('/\\\\/', '\\', $mystr);
会给你预期的结果,请注意preg_replace返回一个新的字符串,并且不会修改现有的字符串,这可能就是你要挂起的内容。
在这种情况下,你也可以使用较便宜的str_replace:
$newstr = str_replace('\\\\', '\\', $mystr);
这种方法花费的CPU时间和内存要少得多,因为它不需要为这样的简单任务编译正则表达式。
答案 1 :(得分:7)