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