замените новую строку между pre tag

Я хочу конвертировать

<p>Code is following</p> <pre> &lt;html&gt;<br>&lt;/html&gt; </pre> 

в

 <p>Code is following</p> <pre> &lt;html&gt; &lt;/html&gt; </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>