【发布时间】:2020-09-18 09:38:21
【问题描述】:
我有一个复杂的 HTML 代码字符串,其中包含几个 pre 标记,其中包含代码(例如 python),并且还由应该删除的 HTML 标记修饰。
例如:
Some text.
<pre>
a = 5 <br/>
b = 3
</pre>
More text
<pre>
a2 = "<a href='something'>text</a>"
b = 3
</pre>
final text
我想清除所有 HTML 标签(这些可能是基本标签,br、em、div、a 等)。我不需要解析HTML,我知道regex cannot parse html。
Some text.
<pre>
a = 5
b = 3
</pre>
More text
<pre>
a2 = "text"
b = 3
</pre>
final text
我想用 PHP 来做这件事(比如preg_replace)。例如:
$html = "<html><head></head><body><div><pre class=\"some-css-class\">
<p><strong>
some_code = 1
</p></strong>
</pre></div></body>"; // Compacting things here, for brevity
$newHTML = preg_replace("/(.*?)<pre[^<>]*>(.*?)<\/pre>(.*)/Us", "$1".strip_tags("$2", '<p><a><strong>')."$3", $html);
echo $newHTML;
这个示例代码显然不起作用,因为:(1) 它只适用于一个 pre 标签,(2) 代码 strip_tags("$2", '<p><a><strong>') 显然不起作用,因为它不处理字符串正确的位置(它只会返回 "$2" 而不是获取文本并正确操作它)。
关于如何在 PHP 中完成此操作的任何建议?谢谢。
【问题讨论】:
标签: php html regex preg-replace pre