我的正则表达式替换需要我们的帮助。 我需要用php中的preg_replace替换一个单词或一个句子
但是我的正则表达式不起作用:(
"/^(?:\s|\.|,)($sWord)(?:\s|\.|,|\!|\?|\:|;)$/"
尝试:
$sContent = preg_replace("/^(?:\s|\.|,)($sWord)(?:\s|\.|,|\!|\?|\:|;)$/",
'<a href="#" data-toggle="tooltip" title="' . htmlspecialchars($sDefinition) . '">' . $sWord . '</a>',
$sContent);
答案 0 :(得分:0)
您的正则表达式是anchored到整个输入字符串的开头和结尾(^
和$
在正则表达式的开头/结尾处)。您需要删除正则表达式才能正常工作。
然后,对于单字符替代方案,最好使用character class而不是替换:
"/[\s.,]($sWord)[\s.,!?:;]/"
如果您需要保留替换操作的分隔符,请将它们括在capturing group中:
"/([\s.,])($sWord)([\s.,!?:;])/"
然后您可以在替换字符串中使用$1
等:
$sContent = preg_replace("/([\s.,])($sWord)([\s.,!?:;])/",
'$1<a href="#" data-toggle="tooltip" title="' . htmlspecialchars($sDefinition) . '">$2</a>$3',
$sContent);