![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: 1 Всего: 4 |
Делаю ленту новостей.
После заголовка вывожу первые 160 символов текста, после последнего слова многоточие. Щелкнув по ссылке "подробно" пользователь попадает на страницу где можно прочитать эту новость в полном варианте. В общем все как обычно. В принципе я все сделал - строка обрезается там где нужно, многоточие ставится, но есть одна неприятность. После последнего слова в обрезаемой строке может оказаться знак препинания (и как правило оказывается) В результате многоточие ставится после этого знака, что совсем не к чему. Конечно можно применить str_replace но тогда придется перебрать все возможные знаки препинания Нет ли встроенной функции для удаления знаков препинания? |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Неа, придется вручную str_replace юзать, но лучше же после образания на самой последней позиции делать проверку на подобные символы, и если есть, то удалять.
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Можно, конечно регуляркой пройтись....
Я в свое время текст обрезал так. Если абзац укладывается в Энное кол-во символов - замечательно. Если нет, ищем последнюю точку в первых 500 симолах. Если нет, значит пробел, вот тут можно расширить - знак препинания. |
|||
|
||||
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: 1 Всего: 4 |
Так не пойдет
Я разбил строку на подстроки разделенные пробелом explode(" ",$news); и перебирая массив считал суммарную длину $длина+=strlen($массив[$n]); это значит что последний элемент массива если в нем есть знак препинания, включает его Наверное лучше str_replace ничего не придумать Если только в регулярных выражениях есть какой то спецсимвол означающий все знаки препинания... |
|||
|
||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Можно их все просто перечислить.
Почему? Подход довольно-таки динамичный, можно под свои нужды переделать. |
||||
|
|||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
А просто:
Если тебе нужны именно знаки препинания, ты можешь strrpos'ом проверять их наличие, а затем выбирать самый правый, короче, тот который в самом конце из всех и обрезать до него. -------------------- ГЫ... |
|||
|
||||
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: 1 Всего: 4 |
Чуть не забыл - всем спасибо
|
|||
|
||||
| sugee |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: 1 Всего: 4 |
кстати вот - может кому пригодится:
Я взял за основу то что предложил AntonioBanderaz и немного расширил. В принципе похоже на то что предлагал Mal Hack но тут нет этого
|
||||
|
|||||
| sugee |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 12.6.2005 Репутация: 1 Всего: 4 |
забыл кавычку закрыть
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |