Регулярные выражения « Обрамление тегом группы символов с условием
Можно ли регулярным образом осуществить подобное: заключать в тег NOBR любой сплошной набор символов, включающих один или более ?. Например:
любой-текст (с указанием любой-текст
любой-текст и к которым любой-текст
любой-текст (<i><b>также</b></i>). любой-текст
(т.е., на месте оформленного полужирным с подчёркиванием, хотелось бы получить:
любой-текст <nobr>(с указанием</nobr> любой-текст
любой-текст <nobr>и к которым</nobr> любой-текст
любой-текст <nobr>(<i><b>также</b></i>).</nobr> любой-текст
)
при этом игнорируя содержимое угловых скобок, например:
<p class="p1">В Путеводителе любой-текст
(т.е.:
<p class="p1"><nobr>В Путеводителе</nobr> любой-текст
)
любой-текст (с указанием любой-текст
любой-текст и к которым любой-текст
любой-текст (<i><b>также</b></i>). любой-текст
(т.е., на месте оформленного полужирным с подчёркиванием, хотелось бы получить:
любой-текст <nobr>(с указанием</nobr> любой-текст
любой-текст <nobr>и к которым</nobr> любой-текст
любой-текст <nobr>(<i><b>также</b></i>).</nobr> любой-текст
)
при этом игнорируя содержимое угловых скобок, например:
<p class="p1">В Путеводителе любой-текст
(т.е.:
<p class="p1"><nobr>В Путеводителе</nobr> любой-текст
)
1 ответов
Первым выражением отбираешь всё что содержится в скобках и заменяешь временными placeholder'ами на подобие %temp_value_1000348%, потом делаешь что нужно и заменяешь ключи из массива на переменные через foreach так как обычный repace работает быстрее регулярок.
foreach ( $values as $key => $value ) $parsed = str_replace($key, $value, $parsed);