заменить <br>на новую строку между тегами pre - PullRequest
2 голосов
/ 12 июня 2010

Я хочу преобразовать

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

в

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

Я не знаю, как написать регулярное выражение для заменымежду тегами pre в PHP.

Я попробовал этот код Заменить переводы строки тегами BR, но только внутри тегов PRE

, но у меня это не работает.

Ответы [ 4 ]

5 голосов
/ 12 июня 2010

Из какого ответа вы используете код?

Предполагая, что это был принятый ответ, просто переверните строку preg_replace() следующим образом:

$parts[$idx] = preg_replace('#<br\s*/?>#', "\n", $part);
0 голосов
/ 12 июня 2010
if (preg_match("/<pre>.*(<br(|\s*\/)>).*<\/pre>/m", $str)) {
    $str = preg_replace("/(<br(|\s*\/)>)/", "\n", $str);
}

Работает точно так же. Заменяет <br>, <br/>, <br /> только при обнаружении внутри ...

0 голосов
/ 12 июня 2010

Попробуйте это:

<code>$newtext = preg_replace('@<pre>.*<br[/>]*?>?
@ si ',' \ n ', $ text);
0 голосов
/ 12 июня 2010

Вы не должны использовать регулярные выражения для сопоставления тегов HTML, потому что это теоретически невозможно.

Есть несколько библиотек php для разбора html, быстрый поиск в Google показал это. http://simplehtmldom.sourceforge.net/

Попробуйте получить код между тегами "pre" и используйте для этого простое регулярное выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...