2010-02-02 49 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)); 
相關問題