2013-08-02 99 views
3

我使用netbeans,我试图用\\替换\但它失败了,它不能逃脱\\这个字符。PHP preg_replace

这不是Netbeans问题,这是一个PHP问题。

preg_replace('\','\\','text to \ be parsed'); 

任何溶剂?

回答

6

使用4个反斜杠请不要忘记分隔符:

echo echo preg_replace('~\\\\~','\\\\\\\\','text to \\ be parsed');

Online demo

说明:当PHP解析\\\\会逸出\\两次,这意味着它成为\\ ,现在当PHP将它传递给正则表达式引擎时,它将收到\\,这意味着\

+0

将无法​​正常工作,需要ascii码 –

+1

@IonutFlaviusPogacian我提供了一个在线演示和一些解释,以消除所有的疑虑。我们正在讨论正则表达式。 – HamZa

+1

是的,良好的捕捉 - 它的作品,现在的解释说清楚。 +1 – naththedeveloper

2

尝试使用php chr()函数并告知preg_replace字符的ASCII代码为\\\

chr function

ascii code table

<?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'), 

?> 
1

这工作:(使用str_replace()函数,而不是preg_replace函数())

$str = "text to \ be parsed"; 

$str = str_replace('\\', '\\\\', $str); 

echo $str;