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


PHP strings: how to replace non-standard characters?

当字符串的一部分和替换部分都包含特殊字符时,我如何替换该部分?例如

$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