查找 Smilar 关键字并将其替换为 URL 参数


find and replace smilar keywords with url parameters

>我有带有URL的文本和关键字,所以我想找到微笑关键字并用url替换它们。

$text="Didimin, Aydın'ın turistik bir ilçesidir.Didimdeki sahil şeridi ve altınkumdaki plajları ile birlikte akbükteki plajlarda....";

$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....
你可以

这样做:

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