我要实现的是关键词替换功能,a、img标签中有关键词会破坏html结构,我用正则判断不成功。
$words = array('需求'=>'<a href="/xuqiu/">需求</a>','二孩'=>'<a href="/erhai/">二孩</a>');
$html = "<p>据不完全统计,在过去国大概50-60%的住房销售给了80后,这期间我国<a href="/a/23423.html" title="房地产需求刚性需求">房地产需求刚性需求</a>为主。而未来随着<a href="/a/sdfsdf.html" title="二孩全面放开政策">二孩全面放开政策</a>的实施,将逐步转向改善性需求为主。从长远来看或许将改变居住格局。如果只有一个孩子,<img src="" alt="房地产需求刚性需求" />两房或三房就基本够住了,但多了一个孩子以后,更多家庭或倾向于换房间更多的大户型。</p>";
<?php
//我写的,判断关键词是否存在a或img中
function findword($word,$html){
$str_reg = '(<a[^>]+>)(.*)('.$word.')(.*)(<\/a[^>]*>)';
$str_reg .= '|(<img)(.*?)('.$word.')(.*?)(>)' ;
if(preg_match("/$str_reg/",$html)){
return true;
}else{
return false;
}
}
?>
你先把破坏规则的做一下置换,比如htmlspecialchars处理,替换完再置换回去就好了啊