0

我们正在做一个项目,在这个项目中,我们必须使用 PHP 将 html 数据替换为数组值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,未更新。

4

1 回答 1

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);

于 2012-10-02T09:11:54.097 回答