我有文字和我的关键字与网址,所以我想找到smilar关键字并用网址替换它们。
$ text =“Didimin,Aydın'ınturistikbirilçesidir.Didimdekisahilşeridivealtınkumdakiplajlarıilebirlikteaküktekiplajlarda....”;
$urls=array('didim'=>'didim.html','altınkum'=>'altinkum.html','akbük'=>'akbük.html');
foreach($urls as $k=>$v){
$text = preg_replace('~'.$k.'(?!(?>[^<]*(?:<(?!/?a\b)[^<]*)*)</a>)~i',
'<a href="'.$v.'" rel="bookmark" title="'.$k.'" >$0</a>', $text,1);
}
echo $text;
怎么能这样做?
<a href="didim.html" title="didim">Didimin</a>, Aydın'ın turistik bir ilçesidir. Didimdeki sahil şeridi ve <a href="altinkum.html" title="altınkum">altınkumdaki</a> plajları ile birlikte <a href="akbük.html" title="akbük">akbükteki</a> plajlarda....
答案 0 :(得分:0)
你可以这样做:
$corr = array('didim'=>'didim.html','altınkum'=>'altinkum.html','akbük'=>'akbük.html');
$str = "Didimin, Aydın'ın turistik bir ilçesidir. Didimdeki sahil şeridi ve altınkumdaki plajları ile birlikte akbükteki plajlarda....";
$pattern = '~(?><(a|head|style|script)\b(?>[^<]++|<(?!/\1))*</\1>|<[^>]++>)(*SKIP)(*FAIL)|(\pL*('. implode(array_keys($corr), '|') .')\pL*)~ui';
$str = preg_replace_callback($pattern,
function ($m) use ($corr) {
return '<a href="' .$corr[strtolower($m[3])] . '">' . $m[2] . '</a>';
}, $str);
print_r($str);