Php Preg_替换问题,必须是琐碎的
很明显,我在preg_替换方面做了一些完全错误的事情 假设我有一串文本 “沉默是金色的,直到你成为沉默的人。”我想用“沉默”来代替“沉默”,但不是用沉默来代替沉默 以下是我的代码:Php Preg_替换问题,必须是琐碎的,php,regex,Php,Regex,很明显,我在preg_替换方面做了一些完全错误的事情 假设我有一串文本 “沉默是金色的,直到你成为沉默的人。”我想用“沉默”来代替“沉默”,但不是用沉默来代替沉默 以下是我的代码: $q = "Silence is golden until you are the one silenced."; $card = "Silence"; $pattern = '/\b'.$card.'\b/i'; $q = preg_replace($pattern,'<strong>'.$card.'
$q = "Silence is golden until you are the one silenced.";
$card = "Silence";
$pattern = '/\b'.$card.'\b/i';
$q = preg_replace($pattern,'<strong>'.$card.'</strong>',$q);
$q=“沉默是金色的,直到你成为沉默的人。”;
$card=“沉默”;
$pattern='/\b'.$card'.\b/i';
$q=preg_replace($pattern,“”.$card.“”,$q);
这将失败并设置$q=“”
我做错了什么?问题解决了。在实际的代码中,我迭代了一个要preg_replace的项目数组,只应用preg_replace,而没有首先使用preg_match进行测试。我猜,不是将\加倍,假设\表示PHP字符串中的转义字符。请尝试\\b看起来工作正常..您的代码在PHP5.2.10-2ubuntu6.5上工作正常。@Paul:在单引号字符串中,仅
\\
和\'
是已知的转义序列;任何其他转义序列都保持不变。因此,'\b'='\\b'
@Gumbo,谢谢。我现在对PHP有了更多的了解:)您可以使用替换的'$0'
,$0
作为整个正则表达式模式的匹配字符串的反向引用。