2010-02-02 76 views
1

如何更换 'ABC' 到 'A \ 0 \ 0℃'如何更换 'ABC' 到 'A 0 0℃'

以下代码是失败,并为输出 'AC'

<?php 
$input = 'abc'; 
$pattern = '/b/i'; 
$replace = "\\0\\0"; 
$output = preg_replace($pattern, $replace, $input); 
echo $output; 
?> 

回答

0

你试过

$replace = '\\0\\0'; 

+0

输出会给 “ABBC” 不是一个预期值 – brian 2010-02-02 03:30:40

+0

您是否尝试过不同的'$ replace'字符串?这只是想要插入'\ 0 \ 0'的问题,还是在其他地方彻底崩溃了? – masher 2010-02-02 03:35:48

+0

我已经试过了,它适用于其他字符串,但我需要用\ 0 \ 0替换,php给出奇怪的输出 – brian 2010-02-02 03:39:48

5

疑问时增加更多的反斜线:

$replace = '\\\\0\\\\0'; 

逃逸的第一级是针对PHP串分析器。单引号和双引号都将\\解释为\。下一个级别是正则表达式解析器。

所以PHP认为:

\\\\0\\\\0 

它解释为:

\\0\\0 

其正则表达式解析器解释为文本字符串:

\0\0 
+0

+1,我只是太慢了......另外@OP:给出了PHP中的示例docs - http://php.net/manual/en/function.preg-replace.php – munch 2010-02-02 03:40:15

+0

谢谢matthew ^^你很棒 – brian 2010-02-02 03:41:35

0

这里有一个 “整洁” 另一没有那些额外的斜线的方式

$string="abc"; 
$s = split("[bB]",$string); 
print_r(implode('\0\0' , $s));