当字符串的一部分和替换部分都包含特殊字符时,我如何替换该部分?例如
$text = "|123|12|12|";
$text = preg_replace("|0|","|12|",$text, 1);
echo($text);
所需输出:"|123|0|12|"
只要这些特殊的字符被保留下来,它们就无关紧要了。例如
$text = "#123#12#12#";
$text = preg_replace("#0#","#12#",$text, 1);
echo($text);
所需输出:"#123#0#12#"
有什么想法吗?
如果不需要regexp,请使用str_replace
而不是preg_replace
。它更高效,避免了逃避任何事情的需要。
如果需要使用preg_replace
(例如,与str_replace
不同,为了利用可以指定替换次数限制的事实),请使用preg_quote
来转义特殊字符。
|充当正则表达式开始的标记。你真的很接近:
$text = "|123|12|12|";
$text = preg_replace("/|0|/","|12|",$text, 1);
echo($text);
这里我用/作为开始和结束标记。你可以使用任何字符。/是很常见的。
请注意,str_replace在这里也足够了
您的模式需要escapement,因为'|'是reg规则中的一个特殊字符。使用"''"转义字符,然后使用"/"作为模式的分隔符。试试这个。:)
$text = "|123|12|12|";
$text = preg_replace("/'|12'|/","|0|",$text, 1);
echo($text);
编辑:顺便说一句,我想你想用"|0|"替换第一个"|12|",但你的代码让我很困惑。函数preg_replace的语句如下:
混合preg_replace(混合$pattern,混合$replacement,混合$subject[,int$limit=-1[,int&$count]])
在主题中搜索与模式匹配的内容,并将其替换为替换内容。
也许你把参数放错地方了
查看有关preg_replace的详细信息:http://cn.php.net/manual/en/function.preg-replace.php