Функция выделения слов и словосочетаний

venukos

Новичок
Функция выделения слов и словосочетаний

Ребята, есть такой скрипт, работает как, в первом массиве указываются слова, во втором ссылки, а в третьтем закрывющие теги. Скрипт берет все слова из первого массива, находит самые первые слова в контенте страницы (далее по контенту повторения этих слов не обрабатываются) и оборачивает соотвествующими ссылками.

Проблема в чем! А в том что данный скрипт работает только с одиночными словами, а к примеру указать в массиве словосочетание и выделить его самое первое вхождение по контенту НЕ РАБОТАЕТ :( Подскажите, плиз, как незначительно изменить скрипт, чтобы можно было выделять не одиночные слова, а к примеру словосочетание из 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;

Делюсь скриптом :)
 

x-yuri

Новичок
разбиваешь каждое искомое слово по пробелам и делаешь третий вложенный цикл
 

venukos

Новичок
до конца не понял идею, а если к примеру будет словосочетание и в одном из слов будет дефис, к примеру:

когда-нибудь будет хорошо
 

Glazyrin Sergey

Новичок
Хм при разбитии слова по пробелам - он не будет искать словосочетания
Мне кажется надо использовать регулярные выражения
Смотреть здесь
http://www.phpfaq.ru/regexp
 

x-yuri

Новичок
уточню идею: разбивай искомое слово так же, как и строку с текстом
 

soines

Новичок
на все 100%. А выдывать то, что другие старались и бескорыстно для вас делали за свое - это низко.. Могли бы сказать что вы нашли скрипт и вам надо помочь его переделать.
 

venukos

Новичок
Автор оригинала: soines
на все 100%. А выдывать то, что другие старались и бескорыстно для вас делали за свое - это низко.. Могли бы сказать что вы нашли скрипт и вам надо помочь его переделать.
Укажите где я его взял?
 

venukos

Новичок
Автор оригинала: soines
ха.. влегкую) тут
Мы с человеком его разрабатывали, я за это даже деньги плачу. Скрипт в доработке


Я вижу если люди видят что-то и где-то тоже, сразу начинают играться в шпионские игры, детский сад, пипец :)

Если вы хотите заработать, то не зачем цеплятся ко мне, а прямо скажите что сделаете за столько денег :) а так это тафталогия ...
 

Glazyrin Sergey

Новичок
Уважаемый - как вы могли разработать этот скрипт ? Вы с человеком его разрабатывали ? Может это сообщество вам помогло разработать - так и говорите, нас, разработчиков, 7 миллиардов.
Btw, вы даже основ не понимаете программирования, да я осмелюсь это сказать
 

AmdY

Пью пиво
Команда форума
если хотите чтобы сделали за Вас, прямо скажите что нужно сделать за столько денег ;). для этого есть специальнй раздел.
 

soines

Новичок
venukos, да? и с кем же из них вы его разрабатываете? KrasivayaSvo или vbify?
 

Glazyrin Sergey

Новичок
Вы думаете здесь каждый думает о том чтобы с кого то что то заработать. Имхо, вы ошибаетесь. Просто здесь дают советы конкретные. А когда "А как мне сделать то и то", без наработок каких либо, даже потуг. Так уважаемый вы разберитесь - мы делаем ваш заказ, или вы делаете свой заказ ?
 

venukos

Новичок
Всегда понимал что на phpclub большенство программистов черезчур высокомерный и сильно уверены в себе!

Удачи ребята!
 
Сверху