Замена слов на синонимы на 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);
			}
	}
}

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

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

  • Реклама сайта
  • Категории
  • Комментарии автору
    • Это очень классная идея )) С нетерпением жду!!! Ты мозг! Респект
    • традиционно - плюс за классную штуку
    • Просто хотел лично тебе выразить свою благодарность! Очень обрадовал меня, что помог!
    • Очень помог! Этот человек гений и я рад, что такие люде ещё есть!
    • Помог реализовать добавление музыки
    • За решение проблема знак вопрос квадрат у строка заголовок
    • very helped me =)
    • Спасибо за Social Engine!
    • Спасибо большое
    • вот спасибо :)
    • Красавчик)))
    • классная штука
    • superman
    • evteev, ты кудесник.
    • +1, решили проблему. Evteev, большое спасибо.
    • кул кул и ещё раз кул.
    • помог решить проблему с вкладкой с музыкой! Спасибо!
    • спасибо тебе огромное, работает!
    • СПАСИБО за мод, сэкономило мне уйму времени на создание своего.
  • Статистика