![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Допустим на вход подается такой текст
"text1 text2 text3 <b>boldtext1</b> <b>boldtext2</b> <b>boldtext3</b> text4 text5" необходимо удалить весь текст с тегами <b> (и сами теги тоже). Я делаю так. Ищу текст между тегами - заменяю его в тексте на пустой, а потом удаляю сами теги.
но код работает некорректно - убирает только содержимое первого тега, т.е. в нашем случае только boldtext1. Теги убирает везде. в чем ошибка понять не могу. может вообще есть способ по-проще? спасибо |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Это сообщение отредактировал(а) enof - 7.6.2009, 23:19 |
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
вообще, понятно что надо использовать регулярки - одна строчка кода против 20
но просто здесь я немного абстрагировал свою задачу, в моем варианте фраза в тексте выглядит примерно так {<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}привет{<span style=\"background-color: #c0c0c0;\">{/ТЯЖ.ПОЛ}</span>} реально ли написать регулярку к таким "тегам"? ну и все же, что было нет так в моем коде изначально? Это сообщение отредактировал(а) derek - 8.6.2009, 00:02 |
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
что-то я мучаюсь и не выходит. вообще реально получится подогнать регулярку под такой формат "тегов"?
{<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}привет{<span style=\"background-color: #c0c0c0;\">{/ТЯЖ.ПОЛ}</span>} |
|||
|
||||
Sentox |
|
|||
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
|
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Sentox,
"тег" в моем случае вот это это "{<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}". Просто для <span> регулярку не проблема написать, да. |
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
ребят ну я что-то все никак не осилю
![]() ![]() ![]() |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
\{<span.*</span>\}
|
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
enof, спасибо!
но тут уже опять my bad. я уже писал что это целый тег "{<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}". может быть еще например такой тег "{<span style=\"background-color: #c0c0c0;\">{ЛЕГ.ПОЛ}</span>}". т.е. важно что находится между span'ов. т.е. регулярка должна быть для всей строки, с чем у меня и возникает проблема |
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
напишу еще раз на всякий случай. у меня может быть такой входной текст
" {<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}hello{<span style=\"background-color: #c0c0c0;\">{/ТЯЖ.ПОЛ}</span>} {<span style=\"background-color: #c0c0c0;\">{ЛЕГ.ПОЛ}</span>}world{<span style=\"background-color: #c0c0c0;\">{/ЛЕГ.ПОЛ}</span>} " нужно написать такие регулярки чтобы осталось " hello world " заранее огромное спасибо! |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Не поверишь, но регулярка так и работает.
|
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
enof, ок, а что делать если из такой входной строки
" {<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}hello{<span style=\"background-color: #c0c0c0;\">{/ТЯЖ.ПОЛ}</span>} {<span style=\"background-color: #c0c0c0;\">{ЛЕГ.ПОЛ}</span>}world{<span style=\"background-color: #c0c0c0;\">{/ЛЕГ.ПОЛ}</span>} " нужно получить такую? " hello {<span style=\"background-color: #c0c0c0;\">{ЛЕГ.ПОЛ}</span>}world{<span style=\"background-color: #c0c0c0;\">{/ЛЕГ.ПОЛ}</span>} " одной единственной универсальой регуляркой в таком случае не справишься |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
А словами описать, что нужно, никак? Или по-вашему легко догадаться по этому:
? |
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
enof,
ну я и пытаюсь несколько постов сказать что регулярка должна полностью соответствовать "тегу". Тегов может быть несколько, причем не обязательно нужно убирать все сразу - для каждого отдельного тега должна быть своя регулярка еще раз, есть такая входная строка (теги выделены жирным) " {<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}hello{<span style=\"background-color: #c0c0c0;\">{/ТЯЖ.ПОЛ}</span>} {<span style=\"background-color: #c0c0c0;\">{ЛЕГ.ПОЛ}</span>}world{<span style=\"background-color: #c0c0c0;\">{/ЛЕГ.ПОЛ}</span>} " необходимо написать регулярку для удаления тегов вокруг слова hello чтобы в результате получилась строка " hello {<span style=\"background-color: #c0c0c0;\">{ЛЕГ.ПОЛ}</span>}world{<span style=\"background-color: #c0c0c0;\">{/ЛЕГ.ПОЛ}</span>} " |
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
пробую так
вываливается с ошибкой Delimiter must not be alphanumeric or backslash Добавлено через 9 минут и 46 секунд разобрался, необходимо было заключить регулярку в слеши. спасибо всем за помощь! Это сообщение отредактировал(а) derek - 13.6.2009, 23:17 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |