使用url参数查找和替换类似的关键字

时间:2013-11-26 20:00:15

标签: php find preg-replace

我有文字和我的关键字与网址,所以我想找到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....

1 个答案:

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