|
|
|
| Недавно передо мной встала такая задачка заменить
(желательно спомощью регулярных выражений)
обрамляющие html теги сохранив внутри них текст
Пример:
<B>некий текст</B>
заменить на:
<XXX>некий текст</XXX>
|
Причем по отдельности теги заменять не надо, надо именно так, как в примере.
Может кто-нить знает, как это сделать | |
|
|
|
|
|
|
|
для: afoadmin
(11.07.2006 в 09:50)
| | Виджали такой форум " рег. выражения"?
$msg = preg_replace("~\<b>([^]]+)\</b\>~isU", "<xxx> $1 </xxx>", $msg);
|
| |
|
|
|
|
|
|
|
для: valenok
(11.07.2006 в 10:33)
| | Ттолько лучше вместо квадратной скобки угловую
<?php
$msg = preg_replace("~<b>([^>]+)\</b\>~isU", "<xxx> $1 </xxx>", $msg);
?>
|
а можно даже так
<?php
$msg = preg_replace("~<b>(.+)\</b\>~isU", "<xxx> $1 </xxx>", $msg);
?>
|
так как всё равно используется модификатор U. | |
|
|
|
|
|
|
|
для: cheops
(11.07.2006 в 14:04)
| | Я прсто чесно стянул ваш код из какойто темы.. | |
|
|
|
|
|
|
|
для: valenok
(11.07.2006 в 14:34)
| | ([^]]+) обычно применяются если тэги в квадратных скобках, т.е. что-то вроде [tag] и [/tag] для угловых скобок <tag> и </tag> стараются применять ([^>]+) или (.+), если внутрь тэгов входят другие тэги. В принципе ([^]]+) тоже покатит, особенно если квадратные скобки не входят в название, но это немного будет смущать других людей, которые будут разбирать логику регулярного выражения. | |
|
|
|
|
|
|
|
для: cheops
(11.07.2006 в 14:39)
| |
$msg = preg_replace("~<b>(.+)\</b\>~isU", "<xxx> $1 </xxx>", $msg);
|
Подскажите зачем перед скобками второго \</b\> косые черты, или тогда почему нет обратных слешей перед первым <b> | |
|
|
|
|
|
|
|
для: afoadmin
(11.07.2006 в 18:18)
| | Собственно их можно убрать, так как \< и < - одно и тоже (для спец-симолов это не так, там экранирование имеет значение). | |
|
|
|
|
|
|
|
для: cheops
(11.07.2006 в 22:30)
| | Еще один каверзный вопрос.... Чем принцыпиально отличается это
$msg = preg_replace("~<b>(.+)</b>~isU", "<xxx> $1 </xxx>", $msg);
|
от вот этого
$msg = preg_replace("#<b>(.+)</b>#isU", "<xxx> \\1 </xxx>", $msg);
# и ~
$1 и \\1
|
Работает вроде одинаково | |
|
|
|
|
|
|
|
для: afoadmin
(12.07.2006 в 15:51)
| | Эти регулярные выражения абсолютно одинаковы, дело в том, что # и ~ здесь выступают как границы регулярных выражений, чтобы указать где заканчивается регулярное выражение <b>(.+)</b> и начинаются модификаторы isU. | |
|
|
|