【发布时间】:2013-08-03 18:34:52
【问题描述】:
我使用netbeans,我尝试用\\ 替换\,但失败了,它无法逃脱\\ 字符。
这不是 Netbeans 问题,而是 PHP 问题。
preg_replace('\','\\','text to \ be parsed');
有什么解决办法吗?
【问题讨论】:
标签: php regex preg-replace
我使用netbeans,我尝试用\\ 替换\,但失败了,它无法逃脱\\ 字符。
这不是 Netbeans 问题,而是 PHP 问题。
preg_replace('\','\\','text to \ be parsed');
有什么解决办法吗?
【问题讨论】:
标签: php regex preg-replace
使用 4 个反斜杠,请不要忘记分隔符:
echo echo preg_replace('~\\\\~','\\\\\\\\','text to \\ be parsed');
解释: PHP解析\\\\时会转义两次\\,也就是变成\\,现在当PHP传递给正则引擎时,会收到@987654326 @ 表示\。
【讨论】:
str_replace() 就可以完成这项工作。为什么我不喜欢chr(92) 技术是因为在实际的正则表达式中你会有一个丑陋的连接。虽然这只是一个偏好:)
尝试 php chr() 函数并告诉 preg_replace \ 和 \\ 的 char ascii 代码。
<?php
echo chr(52) . "<br>"; // Decimal value
echo chr(052) . "<br>"; // Octal value
echo chr(0x52) . "<br>"; // Hex value
preg_replace(chr(1),chr(2),'text'),
?>
【讨论】:
这可行:(使用 str_replace() 而不是 preg_replace())
$str = "text to \ be parsed";
$str = str_replace('\\', '\\\\', $str);
echo $str;
【讨论】: