博客显示代码,保留其他内容

时间:2012-09-14 17:07:39

标签: php blogs preg-match-all

好吧,我有一些代码可以找到<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,现在它已经干净了?

1 个答案:

答案 0 :(得分:0)

使用regex for parsing HTML很糟糕。我建议熟悉DOM解析器,例如PHP's DOM module

  

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 />";
}
?>