![]() |
| Home | Это обо мне | Аватары | Фэнтези | Афоризмы | Спонсорам | Подписаться на RSS | ||||
Category
Archives |
« Next Item: Приспособленный AdSense для поиска Previous Item: Челы вне очереди » Урезание строки по словам
Здравствуйте, уважаемые читатели моего блога. Борьба за красивости всегда актуальна. Все эти виджеты, плагины и т.д. внесли свою лепту. Их содержание может быть различным и приходится как-то урезать. К примеру, используя фреймами, javascript или PHP (если есть такая возможность). При этом, каждый из вариантов имеет как плюсы так и минусы. В случае с PHP и кодировкой UTF-8, использование функции substr() приводит к не самому лучшему результату.
Другими словами, надо искать обходные пути. В своём варианте я предлагаю резать по количеству слов. Основываясь на том, что разбиение строк по пробелу, не приводит к выше упомянутым негативным последствиям.
Здесь переменная $max - ограничение количество слов в строке, $str - сама строка, $words - массив слов (условно) из которых состоит строка (при этом разделителем служит - пробел). Если количество элементов массива ($words) больше нашего ограничения ($max) мы производим урезание благодаря функции array_slice(), которая производит выборку первых $max элементов массива $words. Полученный результат соединяем в строку (разделитель все тот же – пробел), в конец ставим троеточие и присваиваем $str. Правда, есть определённые сомнение относительно функции split(). Если у вас возникли с ней проблемы попробуйте explode Как вы видите все достаточно просто. У нас нет проблем с кусочками слов и т.д. На этом всё. Спасибо за внимание. Альтернативные вариантыИмхо наиболее интересный и правильный вариант от CTapbIu:
Правильный вариант с учетом подключенного в PHP модуля mbstring от wert2all, от кого узнал тот и первый
Вариант от Максима, по крайне мере впервые я об этом узнал от него:
работа в Харькове вакансии , Нижний Новгород Golf Клуб , заказать встроенные шкафы купе киев , геотекстиль ДОРНИТ георешетка ГЕОСЕТКА ГЕОМАТЫ производство купить. , медицинские центры
Leave a reply8 Responses for "Урезание строки по словам"
|
Popular links |
||
| Copyright © since 2006 Курилка.co.ua, powered by WordPress |
|
publish: Суббота Дек 15, 2007 at 11:36 пп
А для таких вот вещей в PHP есть давно mb_substr. Да и mb_strlen тоже лутше использовать вместо strlen. ТОлько в шестой версии починят всю проблему с уникодом.
publish: Понедельник Дек 17, 2007 at 11:57 пп
Век живи век учись
Спасибо за подсказку!
Правда есть один нюанс. Не знаю как в том же PHP5, но в старых версиях вроде как нужно подключать модуль mbstring. Так что оставлю заметку как альтернативное решение… на всякий случай.
P.S. на счет антиспама что есть то есть ничто не совершенно
publish: Вторник Дек 18, 2007 at 12:02 дп
Да везде надо подключать mbstring, но на большенстве хостингов он стоит.
+Не уверен, что будут правильно работать все ваши конструкции с substr и strlen в варианте с юникодом. Ведь эти функции по определению не работают в UTF.
publish: Вторник Дек 18, 2007 at 12:16 дп
2wert2all подловил на хаке с очистки мусора в конце строки
уберу из заметки, а то народ не помет. Еще раз спасибо. Сам пример работает без substr и strlen
publish: Вторник Дек 18, 2007 at 12:31 дп
Этого мало ))) Таки split использовать нельзя. Если уже есть mb_split, то это понятно, что проблема существует. А вот explode нормально разобьёт.
Думаю, совмесными усилиями таки пролечили функцию )
publish: Вторник Дек 18, 2007 at 12:40 дп
2wert2all вообще-то у меня работает и без проблем. Может это символа пробела не затрагивает? Но внесу уточнения
publish: Вторник Дек 18, 2007 at 12:57 дп
Ну я не спорю. Но если уже писать, то писать правильно. Возможно, пробел и не самое большое мировое зло, но благодаря тому, что вы знаете о split, в будущем проблемы будут вас обходить.
Я буквально сегодня попал в просак с ord и chr, хотя в мане функций mb_ord не существует
Пришлось писать костыли.
Короче, очень плохо в PHP c юникодом.
publish: Вторник Дек 18, 2007 at 1:00 дп
мне вариант с preg_match понравился больше. В общем, кто хочет тот прорвется
Главное думать, потом еще раз думать, ну там можно еще на всякий случай подумать, потом пробовать и делать
наверно так.