我想转换
<p>Code is following</p>
<pre>
<html><br></html>
</pre>
到
<p>Code is following</p>
<pre>
<html>
</html>
</pre>
我不知道如何编写正则表达式来替换PHP中的pre标签。
我尝试了这段代码Replace newlines with BR tags, but only inside PRE tags
但它不适合我。
答案 0 :(得分:5)
您使用的代码来自哪个答案?
假设这是接受的答案,只需按以下步骤反转preg_replace()
行;
$parts[$idx] = preg_replace('#<br\s*/?>#', "\n", $part);
答案 1 :(得分:0)
你不应该使用正则表达式来匹配html标签,因为理论上它是不可能的。
有一些用于html解析的php库,谷歌上的快速搜索显示了这一点。 http://simplehtmldom.sourceforge.net/
尝试在“pre”标记之间获取代码,并在此处使用简单的正则表达式。
答案 2 :(得分:0)
试试这个:
$newtext = preg_replace('@<pre>.*<br[/>]*?>?</pre>@si','\n',$text);
答案 3 :(得分:-1)
if (preg_match("/<pre>.*(<br(|\s*\/)>).*<\/pre>/m", $str)) {
$str = preg_replace("/(<br(|\s*\/)>)/", "\n", $str);
}
工作原理相同。只有在<br>
内找到<br/>
<br />
,<pre>...</pre>
,{{1}}