问题标签 [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 回答
663 浏览

javascript - Markdown - PHP 解析器

你知道一些 markdownPHP解析器,withcode highlight等,比如GitHubmarkdown 解析器或https://stackedit.io/editor吗?

如果它可以通过Composer然后更好。

我试过了:

https://packagist.org/packages/michelf/php-markdown

https://packagist.org/packages/league/commonmark

https://packagist.org/packages/erusev/parsedown

但所有这些的结果几乎都是纯文本。

最好的结果属于michelf/php-markdown如下图所示:

在此处输入图像描述

[编辑 1]

现在我几乎达到了我的目标。

我用了:

https://github.com/sindresorhus/github-markdown-css

现在我得到一个非常相似的结果,GitHub但是代码没有根据对应的(在这种情况下:)得到highlighted(用) ,如下图所示:colorslanguagehtml

在此处输入图像描述

那么我现在的问题是:

为了像 GitHub 一样获得代码语法高亮,我需要做哪些额外的步骤?请检查以下 GitHub 的输出:

在此处输入图像描述

0 投票
0 回答
200 浏览

php - PHP:在旧版本中使用“yield”解析 php 文件的任何方法

我正在建立一个类来替换旧的在线类。我们在 php 5.3 中有旧项目。以及新的 php 5.6 和 7.0 项目。开发人员希望在新版本中使用新功能,例如“yield”,但该类也可能包含在旧项目中。当然,旧项目无法通过 yield 运行代码,但它甚至无法解析文件。那么我必须编写两个不同的文件吗?

我想用这个:

产出 $key => $value;

ps如果没有'$key',我可以简单地写:

产量($值);

这可以在 5.3 版中解析。

非常感谢。

0 投票
0 回答
412 浏览

php - PHP Simple HTML DOM - 方法查找检索空数组

现在我正在尝试编写一个 PhP 解析器,但我不知道为什么我的代码返回一个空数组。我正在使用 PHP 简单的 HTML DOM。我知道我的代码并不完美,但它仅用于测试。

我将不胜感激任何帮助

0 投票
2 回答
449 浏览

php - 如何避免 php 解析整个 php 文件并包含并使其仅解析将使用的内容?

我在某处读到 php 每次执行时都会解析整个 .php 文件。那里提出了一些解决方案(那不是 opcache),但是我丢失了网站并且找不到它。

现在我有一个巨大的php网站,里面有很多很长的函数,经常单独使用,并且要求执行速度快。

为了避免让 php 解析所有其他不会使用的函数,我正在考虑进行模块化设计,其中存储在独立 php 文件中的函数只有在实际使用时才会包含在内。但是我无法确认除非需要,否则 php 不会解析函数内部或条件语句内部的包含。php 会解析这些包含吗?

例子:

在此示例中,如果我请求 a,我希望 php 仅解析 func_a,如果我请求 b,则仅解析 func_b,等等。实际上有不止 3 个函数,每个函数都是一个很长的算法,还有很长的字符串和数组。

作为包含的替代方案,我正在考虑制作独立的 php 文件并执行它们并仅在需要时使用 shell_exec 检索它们的输出。但这会带来其他复杂性,例如格式化参数(我不知道如何将带有特殊字符或 JSON 的非常长的字符串作为 shell 中的参数传递)并调用函数以在壳。这些复杂性会让它比让 php 解析整个文件更慢吗?

我知道 opcache 功能。即使每次都测试所有功能的所有操作是否足够?

是否有其他方法可以使 PHP 网站模块化,而不是每次都让 php 解析整个 php 文件?

谢谢你。

0 投票
0 回答
77 浏览

php - 带有 PHP 解析器的 PSR-2 PrettyPrinter

我正在使用nikic/PHP-Parser来解析/操作/打印 PHP 代码。但是没有提供特定的 PrettyPrinters,默认值会在某些点上破坏结果。例子:

预期的

实际的

我的问题:我在哪里可以找到标准 PrettyPrinter 类的基本 PSR-2 扩展来解决这些(和其他)问题?

我需要将它集成到我的脚本中,所以不需要像提到的https://github.com/FriendsOfPHP/PHP-CS-Fixer这样的 CLI 。

我确实找到了一个看起来不错的开始,但它有点旧,我不能轻易让那个运行。

0 投票
1 回答
21 浏览

php - 获取节点偏移量和长度

我正在使用包nikic/php-parser来解析用户提供的 PHP 文件。该文件将包含一些 PHP 函数,我需要知道哪些函数以及定义的确切偏移量和长度。

例如:

在这种情况下,我有一个名为x的函数,偏移量function开始的地方)是6,并且长度一直计算到},在这种情况下是16

所以我在 parser:startFilePos和上启用了两个属性endFilePos,但由于某种原因,它不会给我这些信息。

0 投票
3 回答
197 浏览

php - 如何比较不包括受保护属性的两个节点?(PHP 解析器)

我在我的项目中使用PHP-Parser 。我想使用PHPUnit'sassertEquals函数比较两个节点。

尽管节点相同,但它给出了错误的结果。原因是,其中一个节点包含两个受保护的属性,而另一个不包含:

是否可以比较不包括受保护属性的节点?


示例数据

第一个对象:

第二个对象:

注意PhpParser\Node\Scalar\String_对象["value"]=> string(3) "FOO"

0 投票
0 回答
108 浏览

php - 通过php在下拉列表中显示xml文件级联内容

我有一个本地 xml 文件,我正在尝试使用以下代码在网页上显示该文件。

我得到的只是一个空白页。

在此处输入代码

一旦显示工作,我想要一个下拉列表,我将在其中选择 xml 元素/实体,它将显示该元素/实体的值或子项。

有人可以帮忙吗?

我提到:使用 SimpleXML 从 XML 中获取多个项目并使用php 中的 xml 文件中的值填充下拉列表

两者都分别给了我一个空白页。

0 投票
1 回答
307 浏览

php - 使用 nikic/PHP-Parser 将节点插入 PHP AST

我正在使用https://github.com/nikic/PHP-Parser。想要在 AST 中插入节点时,什么是好的策略?使用遍历器,我可以使用NodeTraverser类轻松更新和删除节点。但是我怎样才能“插入之前”或“插入之后”一个节点?

示例:当遍历 AST 命名空间时,我想Use在第一个非使用语句之前插入一个语句。

我开始使用beforeTraverseafterTraverse查找数组的索引,但它似乎过于复杂。有任何想法吗?

0 投票
1 回答
539 浏览

php - 如何使用 PHP-Parser 获取全局变量名称并进行更改

我想使用PHP-Parser库来获取全局方法 ( _POST, _GET, _REQUEST) 以获取 PHP 中的值。我正在使用PHP-Parser,我想检查节点名称是否等于(_POST, _GET, _REQUEST)。我还是 PHP-Parser 的初学者,不知道如何获取这些全局变量。例如,如果我有以下源代码:

代码:

到目前为止,我使用的 PHP 解析器如下所示:

实现上述 PHP-Parser AST 后,我得到以下结果:

  1. 如何检测测试代码是否有_POST, _GET, REQUEST?例如:
  1. 如何更改$_POST[firstname]hello world! or any text值?例如:之前

谢谢你的帮助