:-)
  • PHP 31.01.2009

    Я подумал, что было бы неплохо писать некоторые мелкие скриптики, которые я использую в своей работе. На сегодня скрипт, который случайное слово в тексте делает ссылкой. Я не буду расписывать как вам сделать форму и прочие мелочи, это, я думаю, вы и сами сможете. Далее собственно код. 

     Считаем, что вы проверили все данные из формы, сделали все, что нужно, мы имеем в итоге текст ($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

    Tags: ,

  • 4 комментариев

    WP_Modern_Notepad
    • Snowcore пишет:

      «Случайное слово в тексте» — не совсем понятно?
      Ты имеешь ввиду строку, которая представляет собой ссылку?

    • fr0st пишет:

      Хех… Пытаешься незаметно подставлять ссылки на порнуху? =) Полезная штука, сохранил — вдруг пригодится.

    • CharnaD пишет:

      Snowcore, в этом скрипте ключевым является регулярное выражение и последующая выборка значения из массива слов. А уж что с этим делать — выбор каждого. Мне по работе надо было вставлять ссылку, а кому-то например надо будет менять случайные слова на синонимы.

    • Alex Snet пишет:

      Надо взять на заметку.
      Думаю, если делать систему с перекресными ссылками,то очень даже может пригодится.

    Trackbacks