Замена слов на синонимы на PHP

7 апреля 2009

Очень популярная тема для Web-Мастеров на сегодняшний день – это встраивание в свой сайт скрипт автоматической замены слов на синонимы или еще его называют синонимайзер. Синонимайзер используют для SEO оптимизации контента сайта, т.е. для уникализации текста на сайте.

Во-первых, нужно создать файл “dictionary.txt”, где будут находиться слова и синонимы к ним. Формат текста в файле должен быть “слово1|слово2|слово3”, т.е. каждое слово должно быть отделено от другого слова вертикальной чертой (“|”), а также каждое выражение необходимо располагать на новой строке. Например,

абордаж|столкновение
абориген|житель|туземец

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

Код программы:

$row = "текст для уникализации";
$znak = array(" ",".",",",":",";"," - ","!","?");
$fileSin = "dictionary.txt";
$masSin = file($fileSin);
$countSin = count($masSin);
$len2 = strlen($row);
for ($t=0; $t< $countSin; $t++) {
	$sin = explode("|",$masSin[$t]);
	$pos = strpos($row, $sin[0]);
	$len = strlen($sin[0]);
	if ($pos > 1) {
		if ( ($pos + $len) < $len2 )
			if ( (in_array($row[$pos + $len], $znak)) AND (in_array($row[$pos - 1], $znak)) ) {
				$r = rand(2, count($sin));
				$OldStr = $row[$pos-1].$sin[0].$row[$pos+$len];
				$NewStr = $row[$pos-1].$sin[$r-1].$row[$pos+$len];
				$row = str_replace($OldStr, $NewStr, $row);
			}
	}
}

Как Вы уже заметили, скрипт очень даже не сложный. Встроить данный скрипт в код вашей странички, я думаю, не составит Вам труда.

Автор: Евтеев Евгений Александрович