【发布时间】:2012-02-27 11:46:18
【问题描述】:
我看到很多可以解析 html 的 php 库。一个很好的例子是QueryPath,它模仿了 Jquery Api。
但是,我希望分析 phtml。因此,该库不仅擅长分析 DOM,而且擅长分析 php processing instructions。例如 Php 文档 对象模型或 PDOM。
这样的文件:
<?php
require 'NameFinder.php';
$title = 'Wave Hello';
$name = getName();
?><html>
<head>
<title><?php echo $title ?></title>
</head>
<body>
<h1>Hello <?php echo $name ?></h1>
<p>Blah Blah Blah</p>
</body>
我希望能够使用这种 php 库来阅读以下内容:
- DOM 节点的内部 html,由 xpath 或 css 选择器找到。
还可能提供以下内容:
- 脚本中调用的 php 函数/方法列表
- php 变量的值
- 该页面所需的页面
- 第 5 行之前使用的 php 变量列表
- body 元素第 1 段之前使用的 php 变量列表
我可以花一些时间拼凑一些东西,从 phpdocumentor 和 Zend Framework Reflection 之类的东西中借用代码,使用内置的 DOM Api、内省和字符串操作等。
但是,如果有某种 *phtmlQuery" 库可以做这些事情,那么它会很方便。
【问题讨论】:
-
analysing the php processing instructions是什么意思?实际解释/执行 PHP 代码? -
我不认为有这样的事情,而且我认为不应该有。您不妨将 PHP 和 HTML 代码分开并分别分析它们(HTML 带有解析器,PHP 可能带有反射或标记器之类的工具)。您的实际用例是什么?
-
php 核心中包含一个 xml 解析器可以做到这一点,但您只能在有效的 xhtml 页面上使用它,而不仅仅是普通的 html 或损坏的 xhtml。您必须设置解析器来处理处理指令,这可能会变得非常复杂。
-
@nickb - 感谢您的评论。我的意思是解释DOM processing instruction nodes,而不执行它。
标签: php dom jquery-selectors static-analysis