Я хочу конвертировать
<p>Code is following</p> <pre> <html><br></html> </pre>
в
<p>Code is following</p> <pre> <html> </html> </pre>
Я не знаю, как писать регулярное выражение для замены между pre тегом в PHP.
Я пробовал этот код Заменить новые строки тегами BR, но только внутри PRE-тегов
но это не работает для меня.
На какой ответ вы используете код?
Предполагая, что это был принятый ответ, просто измените preg_replace()
следующим образом;
$parts[$idx] = preg_replace('#<br\s*/?>#', "\n", $part);
Вы не должны использовать регулярное выражение для соответствия тэгам html, потому что это теоретически невозможно.
Есть несколько php-библиотек для разбора html, быстрый поиск в google показал это. http://simplehtmldom.sourceforge.net/
Попытайтесь получить код между тегами «pre» и используйте для этого простое регулярное выражение.
Попробуй это:
$newtext = preg_replace('@<pre>.*<br[/>]*?>?</pre>@si','\n',$text);
if (preg_match("/<pre>.*(<br(|\s*\/)>).*<\/pre>/m", $str)) { $str = preg_replace("/(<br(|\s*\/)>)/", "\n", $str); }
Работает точно так же. Заменяет <br>
<br/>
, <br />
только при обнаружении внутри <pre>...</pre>