Я подумал, что было бы неплохо писать некоторые мелкие скриптики, которые я использую в своей работе. На сегодня скрипт, который случайное слово в тексте делает ссылкой. Я не буду расписывать как вам сделать форму и прочие мелочи, это, я думаю, вы и сами сможете. Далее собственно код.
Считаем, что вы проверили все данные из формы, сделали все, что нужно, мы имеем в итоге текст ($text) и URL ($site), на который будет ссылаться слово.
//самая главная строка. берем слова от 4х букв кириллицей preg_match_all('/b[а-яА-Я]{4,}?b/', $text, $matches, PREG_OFFSET_CAPTURE); $matches = $matches[0]; if ( count($matches) == 0) { //тут выдаем ошибку. можете сделать по-своему, например через trigger_error $errors[] = "Отсутствуют слова, которые можно сделать ссылкой."; continue; } //берем случайное слово и его позицию в тексте $r = mt_rand(0, count($matches)-1); $word = $matches[$r][0]; $position = $matches[$r][1]; //разбиваем на куски: до слова, само слово и кусок после слова $before_word = substr($text, 0, $position); $after_word = substr($text, $position + strlen($word)); $word = "<a href=".$site.">".$matches[$r][0]."</a>"; //а потом склеиваем обратно $content = $before_word.$word.$after_word;
Все очень просто) Если у вас не находятся слова, хотя они есть, возможно вам нужно выставить локаль на русскую. Сделать это можно так
setlocale(LC_ALL, 'ru_RU.CP1251');
Upd: прошу заметить, что для UTF кириллицы \b не подходит. Надо использовать последовательность \p{xx}. Смотреть тут: http://www.php.net/manual/en/regexp.reference.unicode.php






Февраль 5th, 2009 at 11:19
«Случайное слово в тексте» — не совсем понятно?
Ты имеешь ввиду строку, которая представляет собой ссылку?
Февраль 5th, 2009 at 12:55
Хех… Пытаешься незаметно подставлять ссылки на порнуху? =) Полезная штука, сохранил — вдруг пригодится.
Февраль 5th, 2009 at 15:17
Snowcore, в этом скрипте ключевым является регулярное выражение и последующая выборка значения из массива слов. А уж что с этим делать — выбор каждого. Мне по работе надо было вставлять ссылку, а кому-то например надо будет менять случайные слова на синонимы.
Февраль 7th, 2009 at 10:32
Надо взять на заметку.
Думаю, если делать систему с перекресными ссылками,то очень даже может пригодится.