当前位置: 首页 > 面试题库 >

任何用PHP编写的体面的PHP解析器?[关闭]

颛孙嘉玉
2023-03-14
问题内容

我做了很多工作来处理和分析PHP代码。通常,我只是使用Tokenizer来做到这一点。对于大多数应用来说,这已经足够了。但是有时使用词法分析器解析不够可靠(显然)。

因此,我正在寻找一些用PHP编写的PHP解析器。我发现hnw /
PhpParser
和kumatch / stagehand-php-
parser
。两者都是通过使用PHP而不是C
将zend_language_parser.y自动转换为.y文件创建的,然后编译为LALR(1)解析器。但是,这种自动转换无法使用。

那么,有没有用PHP编写的不错的PHP解析器?(对于PHP 5.2,我需要一个,对于5.3,我需要一个。但是,其中一个也是一个很好的起点。)


问题答案:

在这里找不到完整而稳定的解析器后,我决定自己写一个。结果如下:

PHP-Parser :用PHP编写的PHP解析器

该项目支持解析为PHP 5.2和PHP 7.1之间的任何PHP版本编写的代码。

除了解析器本身之外,该库还提供一些相关组件:

  • 将AST编译回PHP (“漂亮打印”)
  • 遍历和更改AST的基础结构
  • 与XML的串行化(以及以人类可读形式进行转储)
  • 命名空间名称的解析(别名等)


 类似资料:
  • 问题内容: 我正在尝试将sql查询转换为php数组。 例如: SELECT col_name FROM tbl_name WHERE col_name > 0; 必须返回如下内容: 我发现了这个。MB,您知道更好的解决方案吗? 问题答案: 有几个软件包可用于此任务: package :http : //pear.php.net/package/SQL_Parser(仍然很新) txtSQL :ht

  • 问题内容: 我是PHP DOM解析的新手: 我有一个要解析的HTML文件。它有很多这样的DIV: 我正在尝试使用php获取许多div框的内容。如何使用DOM解析器执行此操作? 谢谢! 问题答案: 首先,我必须告诉您,您不能在两个不同的div上使用相同的ID;有一些关于这一点的课程。每个元素应具有唯一的ID。 使用id =“ interestingbox”获取div内容的代码 类的示例: 有关更多详

  • simplexml_load_string()似乎不是以下xml的工作形式 上面的xml是响应的一部分,因此当得到结果时,它只包含属性 结果是SimpleXMLElement的一个对象,只有一个属性数组 它没有任何与“Chat_valiable”或隐藏相关的内容。 能找个人帮忙吗

  • 问题内容: 如何解析HTML / XML并从中提取信息? 问题答案: 本机XML扩展 我更喜欢使用本机XML扩展]之一,因为它们与PHP捆绑在一起,通常比所有第3方库都快,并为我提供了所需的所有标记控制权。 DOM DOM扩展使您可以使用PHP 5通过DOM API通过XML文档进行操作。它是W3C的Document Object Model Core Level 3的实现,它是一种平台和语言无关

  • 问题内容: 我以前使用过XML Parser,尽管它工作正常,但总体上我并不满意,感觉好像我在使用变通办法来处理应该是基本功能的事情。 我最近看到了SimpleXML,但还没有尝试过。有没有更简单的方法?两者都有哪些优点和缺点?您使用过其他解析器吗? 问题答案: 我不得不说,SimpleXML是蛋糕,因为它首先是用C编写的扩展,并且非常快。但第二,解析后的文档采用PHP对象的形式。这样您就可以像“

  • 问题内容: 我正在尝试从Google购物API中提取数据。我能够成功下载数据,但是在使用PHP解析数据时遇到了麻烦。我仍在学习,但是我似乎在多维数组方面遇到问题。我使用捕获JSON 。 以下只是呼应外部数组,但我不能从内部数组中提取: 如果要获取每个产品的“标题”,“描述”,“品牌”和“可用性”,我将如何解析? 问题答案: 您的JSON是数组 和对象 的混合 体 。因此,数组表示法不适用于所有项目