Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > удаление значения между тегами |
Автор: derek 7.6.2009, 23:09 | ||
Допустим на вход подается такой текст "text1 text2 text3 <b>boldtext1</b> <b>boldtext2</b> <b>boldtext3</b> text4 text5" необходимо удалить весь текст с тегами <b> (и сами теги тоже). Я делаю так. Ищу текст между тегами - заменяю его в тексте на пустой, а потом удаляю сами теги.
но код работает некорректно - убирает только содержимое первого тега, т.е. в нашем случае только boldtext1. Теги убирает везде. в чем ошибка понять не могу. может вообще есть способ по-проще? спасибо |
Автор: enof 7.6.2009, 23:18 | ||
|
Автор: derek 7.6.2009, 23:43 |
вообще, понятно что надо использовать регулярки - одна строчка кода против 20 но просто здесь я немного абстрагировал свою задачу, в моем варианте фраза в тексте выглядит примерно так {<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}привет{<span style=\"background-color: #c0c0c0;\">{/ТЯЖ.ПОЛ}</span>} реально ли написать регулярку к таким "тегам"? ну и все же, что было нет так в моем коде изначально? |
Автор: derek 9.6.2009, 02:27 |
что-то я мучаюсь и не выходит. вообще реально получится подогнать регулярку под такой формат "тегов"? {<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}привет{<span style=\"background-color: #c0c0c0;\">{/ТЯЖ.ПОЛ}</span>} |
Автор: Sentox 9.6.2009, 07:03 | ||
|
Автор: derek 10.6.2009, 12:02 |
Sentox, "тег" в моем случае вот это это "{<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}". Просто для <span> регулярку не проблема написать, да. |
Автор: derek 12.6.2009, 12:42 |
ребят ну я что-то все никак не осилю ![]() ![]() ![]() |
Автор: enof 12.6.2009, 12:55 |
\{<span.*</span>\} |
Автор: derek 12.6.2009, 23:01 |
enof, спасибо! но тут уже опять my bad. я уже писал что это целый тег "{<span style=\"background-color: #c0c0c0;\">{ТЯЖ.ПОЛ}</span>}". может быть еще например такой тег "{<span style=\"background-color: #c0c0c0;\">{ЛЕГ.ПОЛ}</span>}". т.е. важно что находится между span'ов. т.е. регулярка должна быть для всей строки, с чем у меня и возникает проблема |
Автор: derek 13.6.2009, 08:57 |
напишу еще раз на всякий случай. у меня может быть такой входной текст " {<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 13.6.2009, 18:23 |
Не поверишь, но регулярка так и работает. |
Автор: derek 13.6.2009, 18:51 |
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>} " одной единственной универсальой регуляркой в таком случае не справишься |
Автор: derek 13.6.2009, 21:16 |
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 13.6.2009, 23:16 | ||
пробую так
вываливается с ошибкой Delimiter must not be alphanumeric or backslash Добавлено через 9 минут и 46 секунд разобрался, необходимо было заключить регулярку в слеши. спасибо всем за помощь! |