PHP字符串:如何替换非标准字符?

时间:2012-02-12 23:52:39

标签: php preg-replace

当该部分和替换部分都包含特殊字符时,如何替换部分字符串? e.g。

$text = "|123|12|12|";
$text = preg_replace("|0|","|12|",$text, 1);
echo($text);

所需的输出:“| 123 | 0 | 12 |”

只要特殊字符被保留,它们就无关紧要。 E.g。

$text = "#123#12#12#";
$text = preg_replace("#0#","#12#",$text, 1);
echo($text);

所需输出:“#123#0#12#”

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

如果您不需要regexp,请使用str_replace代替preg_replace。它更有效率,避免逃避任何事情。

如果您需要使用preg_replace(例如,为了利用您可以指定替换次数限制的事实,与str_replace不同),请使用preg_quote逃避特殊角色。

答案 1 :(得分:1)

|充当正则表达式开始的标记。你真的很亲密:

$text = "|123|12|12|";
$text = preg_replace("/|0|/","|12|",$text, 1);
echo($text);

这里我使用/作为开始和结束标记。你可以使用任何角色。 /很常见。

请注意,str_replace也足够了

答案 2 :(得分:0)

你的图案需要擒纵,因为'|'是reg规则中的特殊字符。 使用'\'来转义char,然后使用'/'作为模式的分隔符。 试试这个。 :)

$text = "|123|12|12|";
$text = preg_replace("/\|12\|/","|0|",$text, 1);
echo($text);

编辑: BTY,我想你要替换第一个'| 12 |'使用'| 0 |',但是你的代码让我感到困惑。 函数preg_replace的语句如下:

  

混合preg_replace(混合$ pattern,混合$替换,混合$ subject [,int $ limit = -1 [,int& $ count]])

     
    

搜索主题匹配模式并用替换替换它们。

  

也许您已将参数放在错误的位置 详细了解preg_replace:http://cn.php.net/manual/en/function.preg-replace.php