我们正在开发一个项目,我们必须使用PHP preg_replace()
请查看代码
码
$html = new simple_html_dom();
$texts = array('Replace','the', 'asterisks','prefer','it','all','functions','will','replace','computer','strategic','casio','computing','smart');
$html->load("<body><div>Replace the asterisks in a list with numbers in order</div><div>or if you prefer it all condensed down into a single smart</div><li>Both functions will replace placeholder</li><li>smart</li></body>");
$sample = &$html->outertext ;
foreach($texts as $text){
$fine = trim($text);
$replace = '<u>'.$fine.'<\u>';
if(!empty($text)){
if (strpos($sample,$fine)){
$sample = preg_replace('/$fine/',$replace,$sample);
$html->save(); /// Update all the replaces on $html ;
}
}
}
echo $sample;
打印相同的$html
,未更新。
答案 0 :(得分:0)
preg_replace('/$fine/',$replace,$sample);
应该是:
preg_replace("/$fine/",$replace,$sample);
变量仅在双引号内替换,而不是单引号。
当您的所有文本都是普通字符串时,为什么使用preg_replace
?为什么不str_replace
?
您也可以在一次通话中完成所有替换。 str_replace可以使用搜索和替换字符串数组:
$replacements = array_map(function($e) {return "<u>$e</u>";}, $texts);
str_replace($texts, $replacements, $sample);
或使用正则表达式,您可以使用管道匹配所有单词:
$ regex = implode('|',$ texts); preg_replace(“/ $ regex /”,'$ 0',$ sample);