2013-11-26 4 views
0

У меня есть мои URL-адрес с ключевыми словами, поэтому я хочу, чтобы найти Смилер ключевых слов и заменить их URL.найти и заменить текст и ключевые слова с параметрами URL

$ текст = «Дидье, Айдын является туристическим районом Didier побережье и пляжи вместе с моим на моем пляже в Алтынкум Акбук ....»;

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

Howe результат, как это может сделать?

<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

Вы можете сделать это следующим образом:

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

Didim в этом еще вырезать Смилер ключевые слова должны обернуть все ключевые слова, как это Didimin

+0

еще один вопрос, как сделать только один подобный замену слов в этом Didier просто заменить только мой текст. –

+0

@nurettinac является: заменить '('взрываться (array_keys ($ корр). | ').')' 'По didim', user' preg_replace' вместо' preg_replace_callback' и заменить функцию со строкой: '«$2 ' ' –

Смежные вопросы