Похожие темы / Similar Topics

Started by InKomen on 2011-10-08 02:50 — 111 replies, 21092 views

#71
Еще добавил функцию удаления слов из трех букв и менее но не работает с русскими буквами
function remove_short_words($slug) {
      $slug = explode(' ', $slug);
      foreach ($slug as $k => $word) {
        if (mb_strlen($word, 'utf-8') < 3) {
            unset($slug[$k]);
        }
    }
    return implode(' ', $slug);
}
#72
И далее
если $count_similar == 0 то осуществляем поиск по стандартной схеме
#73
Да кстати preg_replace не работает с кириллицей а-яА-Я в кодировке UTF-8, но если перечислить все символы по одиночке, то всё норм. Чисто моя наработка. Нигде больше не встречал простого решения

Я вот вообще не понимаю зачем там половина символов, если указан модификатор i. Вообще вариант с
#([^-a-zа-яё\s]*)#iu
должен работать
#74
Я вот вообще не понимаю зачем там половина символов, если указан модификатор i. Вообще вариант с PHP: #([^-a-zа-яёЁ\s]*)#iu должен работать

Не работает. Некоторые буквы жует и заменяет на непонятно что. У многих такая проблема http://unixforum.org/index.php?showtopic=123608
Мой вариант работает
#75
Вася, допустим, но Вы указываете регистронезависимый шаблон (о чем свидетельствует модификатор i), зачем там половина символов. И модификатор u Вы видимо не замечаете, и его отсутствие в шаблонах у людей с проблемами
#76
С модификатором i согласен, а вот с u по-моему не работало.
#77
Вася, ну появится желание ради интереса проверьте, главное не перепутайте регистр модификатора
#78
Допустим я согласен по поводу модификатора i, а вот с u всё равно не прокатывает. В любом случае под вечер уже мозги не варят и выкладываю свой вариант similar topics. В нем много корявостей и мусора, так что не пинайте, но он работает.
Сначала осуществляет поиск по 4 словам, если ничего не находит, то ищет стандартно.
Spoiler content hidden.
#79
Сейчас проверил. Вот результаты. Скрины для двух вариантов соответсвенно
$title = preg_replace("#([^-A-Za-zа-яА-ЯёЁ_%\s]*)#i", '', $title);
$title = preg_replace("#([^-A-Za-zа-яА-ЯёЁ_%\s]*)#iu", '', $title);
Видно что регулярка туповата и ей явно нужно указывать все символы

http://s020.*******.host/i704/1308/e8/a86409247f52.jpg



http://i053.*******.host/1308/8f/283c3d81faaf.jpg
#80
/[(\w)|(\x7F-\xFF)|(\s)]/

http://habrahabr.ru/qa/13404/
Этот код вырезает все, кроме русско/английских букв и цифр: $s = preg_replace("/[^\\w\\x7F-\\xFF\\s]+/s", $s);