Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хитрая рекурсивная Регулярка, Хитрое обрезание <BR /> 
V
    Опции темы
SwordOfDeath
Дата 25.1.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



Привет = )

Задача нужно обрезать тег "<br />". Но не просто все вырезать а по хитрым правилам:
1) если есть вначале строки
2) если есть в конце строки
3) множественное повторение внутри строки

Тоесть из строки
Код

<br />Привет,<br />Скучал?<br /><br />А я конфетки принесла!!!<br /><br /><br />

Должно получится
Код

Привет,<br />Скучал?<br />А я конфетки принесла!!!


Ну допустим если в начале и в конце по одному <br /> я обрезать смогу... а вот когда они могут повторяться неограниченное количество раз то тут уже рекурсивно как-то нужно...
Конечно можно написать штук пять правил типа "<br \/><br \/>", "<br \/><br \/><br \/>" итд. убрав повторения, а потом обрезать начало и конец, но это не по феншуЮ и ресурсов много будет жрать... Да и в ситуации когда <br /> будет много регулярка не сработает =\
Подскажите пожалуйста =\

PM MAIL   Вверх
skyboy
Дата 25.1.2010, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



использовать указание количества повторений
Код

(<br />){2,}

возможно, стоит учесть ситуацию с пробелами между <br />:
Код

(<br />\s*){2,}


PM MAIL   Вверх
SwordOfDeath
Дата 25.1.2010, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



skyboy, Спасибо огромное!
Вот теперь интересно как убрать вначале и вконце... Так чтоб красиво... =) Так чтоб в одной регулярке...
Пришла в голову безумная идея:
Вручную дописать в начало и в конец "<br />" пройтись "(<br />\s*){2,}", а потом пострипать по шесть символов вначале и вконце ) О_О

UPD: Решение
Код

$text = "<br />".$row['text']."<br />";
$text = preg_replace ( "/(<br \/>\s*){2,}/si", "<br />", $text );
$text = substr( $text, 6, strlen($text)-12 );


Возможно не лучшее =) Но мне показалось прикольным ) smile 

Это сообщение отредактировал(а) SwordOfDeath - 25.1.2010, 17:30
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.