【问题标题】:Parsing HTML with PHP code使用 PHP 代码解析 HTML
【发布时间】:2015-12-22 19:48:04
【问题描述】:

我有一些文件,其中也有 php 服务器代码。是预期的。我想知道即使文档中有 php 标签,SimpleXMLDom 是否有办法解析元素。

例子

<html>
    <? if(false) { ?>
    Never print this
    <? } ?>
</html>

我想用 php 服务器标签以纯文本格式获取 html 的内容。好像只是加载这段代码会导致异常。

我知道通过以下方式评估整个块非常容易:

eval('?>'.$html.'<?');

但我想做的是拉一个元素,如果有 php 评估代码,就像下面给出的那样,但似乎我不能用 php 加载 html 代码并通过解析它SimpleXMLDom 如果库有技巧或其他方法可以简单地做到这一点

【问题讨论】:

  • 这段代码有多复杂?一种可能的方法是eval 启用输出缓冲区的块(例如include),然后解析该缓冲区收集的内容。显然,即使 PHP 代码有可能变成流氓的可能性很小,也不是一个好主意。
  • 是的,但我只想在遍历 dom 树时才评估 php 代码,而不是一次全部。

标签: php html xml simplexml


【解决方案1】:

你可以试试

<?php 
   $xml=simplexml_load_file("your_file.php");


   foreach($xml->children() as $child)
   {
     if (substr(ltrim($child->getName(), " \t"), 0,1) == "?">{
        you have php code
     }
   }
?>  

【讨论】:

  • 如果可以的话那就太好了,但只是加载文件会导致错误。
  • 这意味着php不是格式良好的xml。如果是这样,您不能使用simplexml进行解析,但您可以考虑文本解析..
  • 我确实问过 SimpleXmlDom 是否不可能,怎么办?
  • 您可以将一个简单的文件加载为文本并执行类似于循环的循环,以回答每一行/行..这样您就可以找到包含 = 或 .php我不知道这是否是您需要的,但这很容易。如果这是您需要的,我可以通过这种方式更新答案..
猜你喜欢
  • 2019-12-28
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 2015-07-17
  • 2014-06-22
相关资源
最近更新 更多