venukos
Новичок
Функция выделения слов и словосочетаний
Ребята, есть такой скрипт, работает как, в первом массиве указываются слова, во втором ссылки, а в третьтем закрывющие теги. Скрипт берет все слова из первого массива, находит самые первые слова в контенте страницы (далее по контенту повторения этих слов не обрабатываются) и оборачивает соотвествующими ссылками.
Проблема в чем! А в том что данный скрипт работает только с одиночными словами, а к примеру указать в массиве словосочетание и выделить его самое первое вхождение по контенту НЕ РАБОТАЕТ
Подскажите, плиз, как незначительно изменить скрипт, чтобы можно было выделять не одиночные слова, а к примеру словосочетание из n слов (петя молодец, петя идет в школу и т.п.)
Делюсь скриптом
Ребята, есть такой скрипт, работает как, в первом массиве указываются слова, во втором ссылки, а в третьтем закрывющие теги. Скрипт берет все слова из первого массива, находит самые первые слова в контенте страницы (далее по контенту повторения этих слов не обрабатываются) и оборачивает соотвествующими ссылками.
Проблема в чем! А в том что данный скрипт работает только с одиночными словами, а к примеру указать в массиве словосочетание и выделить его самое первое вхождение по контенту НЕ РАБОТАЕТ
Подскажите, плиз, как незначительно изменить скрипт, чтобы можно было выделять не одиночные слова, а к примеру словосочетание из n слов (петя молодец, петя идет в школу и т.п.)
PHP:
$words=array('слово1','слово2','слово3');
$open_tags=array('<a class="ssilka1" href="ssilka1">','<a class="ssilka1" href="ssilka2">','<a class="ssilka1" href="ssilka3">');
$close_tags=array('</a>','</a>','</a>');
function highlight_first($text, $words, $open_tags, $close_tags) {
$search_array=explode(" ",$text);
$so=sizeof($search_array);
$so1=sizeof($words);
for ($j=0;$j<$so1;$j++) {
for ($i=0;$i<$so;$i++) {
$str1=mb_strtolower($search_array[$i]);
$str1=rtrim($str1,"~!@#$%^&*()_+{}|:\"<>?`-=[]\\;',./");
$str1=ltrim($str1,"~!@#$%^&*()_+{}|:\"<>?`-=[]\\;',./");
$str2=mb_strtolower($words[$j]);
if ($str1==$str2) {
$search_array[$i]=$open_tags[$j].$search_array[$i].$close_tags[$j];
break;
}
}
}
$text=implode(" ",$search_array);
return $text;
}
$text = "Слово2 текст текст текст текст текст слово1 текст текст текст! Текст текст текст текст текст - слово3 текст текст текст - текст!";
$text=highlight_first($text,$words,$open_tags,$close_tags);
echo $text;
Делюсь скриптом

. для этого есть специальнй раздел.