问题标签 [php-parser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
82 浏览

php - 如何在 PHP-Parser 中获取全局变量的索引

我正在使用PHP-Parser来构建 AST。然后我想到达全局变量的索引,例如$_POST['firstname'],所以我想到达索引firstname并获取它。例如如何到达全局变量的索引;

测试

AST 结果:

那么如何到达索引firstname并将其存储在变量中呢?

0 投票
1 回答
172 浏览

php - 使用 token_get_all() 时,如何确定“孤独”的 T_STRING 是函数调用、常量还是其他?

最小示例代码:

使用 token_get_all() 的结构:

如您所见,可以通过检查T_STRING、前面是T_WHITESPACE和前面的T_FUNCTION来检测函数定义。到目前为止,一切都很好。

但是,函数调用只是一个T_STRING,就像许多其他事物一样,例如参数的“真实”常量,在它之前或之后都没有特殊符号。

如果在 T_STRING 之前没有符号告诉我的解释器下一个 T_STRING 应该指什么,我怎么知道它指函数名还是其他东西

如果您的回答是我需要检查是否存在名称为 T_STRING 值的函数,这是否意味着不存在名为 true() 的函数?因为那会与“真实”常数冲突?如果我需要进行这样的检查,它会以许多不同的方式使事情复杂化......

0 投票
1 回答
99 浏览

php - 如何遍历具有If条件的PHP源代码

我正在使用PHP-Parser来评估用于遍历 if 语句的条件。我只想知道在代码的遍历过程中使用了哪些条件。例如:

测试

我已经找到了测试代码的AST,如下

AST

我想要得到的是遍历期间测试代码中使用的条件,预计是这样的:

预期结果

所以我只是想知道如何获得遍历过程中通过的条件。

0 投票
1 回答
808 浏览

php - 如何在 AST 中获取变量名和值

我正在使用PHP-PArser来查找 PHP 程序的 AST。例如:

代码

上述示例的 AST 结果如下:

我试图找到的是variable = _POSTANDnew = nonexist 我使用leavenode功能来达到_POSTvariable. 我要查找的代码_POST如下variable

到目前为止,我的结果在单独的行中显示了每个变量,如下所示:

但是,我希望结果是:

请有任何帮助

0 投票
1 回答
72 浏览

parsing - 如何在 PHP-Parser 中隐藏属性

我正在使用PHP-Parser来解析 PHP 代码,并以 Json 格式获取 AST。我想问如何在没有属性的情况下获得结果(startLine、endLine、comment 等)

0 投票
1 回答
57 浏览

php - 如何使用 Nikic/PHPParser 获取变量值

我有以下 PHP 代码文件:

现在喜欢用nikic/PHP-Parser来获取getList函数的返回值

我怎么做?

0 投票
1 回答
98 浏览

php - PHP-Parser:漂亮的打印多行数组

使用nikic/php-parser,我正在尝试读取现有配置文件,在其中找到一个数组节点,将一个新项目附加到该节点,然后将所有内容写回文件。
理想情况下,这不应修改文件的其余部分,包括注释和空格。

我正在使用文档中概述的格式化保留漂亮打印的方法。

节点访问者大致如下所示(为清楚起见已截断):

原来的配置文件大概是这样的:

但是,PHP-Parser 会打印出什么:

所以看起来保留格式的漂亮打印实际上确实删除了文件中所有项目之间的空行,即使我没有触摸它们,并且还将我现有的数组从多行转换为单行。
我知道保留格式的选项仍然是实验性的和不完整的,但是从我在文档中读到的内容来看,问题代码多行数组实际上应该已经可以工作了,因此我希望其他项目保持不变至少。

有没有办法强制数组结构的多行输出?我错过了什么?我对 AST 操作还不是很深入。

0 投票
0 回答
59 浏览

php - 检查变量是否使用 nikic/php-parser 定义

我正在尝试构建一个静态代码分析工具,并且我想检查文件中的变量是否已定义。目前我正在使用 nikic/PHP-Parser ( https://github.com/nikic/PHP-Parser ),但我不确定我正在尝试的是否可能。

所以我的问题是:是否可以检查是否(可能)设置。那么变量是否包含与 null 不同的值?由于代码不是在静态分析中执行的,因此我觉得在将变量提供给函数之前可能无法“猜测”变量是否为空。

一个例子:

在这种情况下,当$page结果为空时,第二行可能会给我们一个例外。我想使用静态分析来检测代码中的这些不稳定性。

这是我正在尝试使用 PHP-Parser 的一段代码。

编辑:为了更清楚地说明我为什么要这样做,我正在尝试构建一个应用程序来检测可能的 500 个错误,而无需对代码的执行一无所知。

0 投票
0 回答
50 浏览

php - PHP - HTML DOM Parser 获取每个不包含子特定元素的 div

我使用 HTML DOM 解析器 https://simplehtmldom.sourceforge.io/ 如何获取每个不包含子特定元素的 div ?我在一些里面有一个 div 组,我想为每个没有像 h1 这样的特定元素的 div 有一个类 例如:

结果:内容

喜欢这个 js,但在 PHP 中需要:https ://stackoverflow.com/a/67132413/14592575

我正在尝试我的 php 代码:

Think Simple HTML DOM Parser Manual Library 不完整,因为无法显示类名是否有替代方案并适用于结果

0 投票
2 回答
59 浏览

php - 如何从字符串变量解析 php 函数?

我想从字符串变量中提取和运行 PHP 函数。我的字符串变量是:

我怎样才能做到这一点?