0

好的,我有一些代码可以找到<code></code>标签集并清理其中的任何代码,以便它显示而不是像常规代码那样运行。一切正常,但我的问题是如何在里面找到标签集/多个标签集,比如$content. 清理代码,仍然包含所有其他内容?这是我的代码,问题是它会检查匹配项,找到匹配项时会对其进行清理。但是在它清理之后,它就无法将它放回原来的位置$content。($content正在从表格中抓取)

<?php
preg_match_all("'<code>(.*?)</code>'si", $html, $match);
if ($match) {
  foreach ($match[1] as $snippet) {
    $fixedCode = htmlspecialchars($snippet, ENT_QUOTES);          
  }
}
?>

既然 $fixedCode 是干净的,我该怎么办?

4

1 回答 1

0

使用正则表达式解析 HTML是不好的。我建议熟悉 DOM 解析器,例如PHP 的 DOM 模块

DOM 扩展允许您使用 PHP 5 通过 DOM API 对 XML 文档进行操作。

使用 DOM 模块,为了从<code>文档中的标签获取 HTML/数据,您需要执行以下操作:

<?php
//So many variables!
$html = "<div> Testing some <code>code</code></div><div>Nother div, nother <code>Code</code> tag</div>";

$dom_doc = new DOMDocument;

$dom_doc->loadHTML($html);

$code = $dom_doc->getElementsByTagName('code');

foreach ($code as $scrap) {
    echo htmlspecialchars($scrap->nodeValue, ENT_QUOTES), "<br />";
}
?>
于 2013-01-17T12:35:02.003 回答