通过 PHP 脚本检查 JavaScript 语法错误

问题描述 投票:0回答:1

我正在尝试以 JavaScript 代码的形式获取一些用户输入,这些输入将包含在另一个页面中。但我面临的问题是,如果js代码中有任何语法错误,页面加载将突然停止。给最终用户留下损坏的页面。所以我打算停止将js代码嵌入到页面中,如果它有任何语法错误。

为此,我需要验证 php 脚本中的 js 代码,并根据语法错误决定是否在页面中包含 js 代码。

所以我的问题是,是否有任何其他方式/库可以离线运行并且在服务器中占用空间最小,以便我将其包含在我的 php 脚本中。类似 JS Lint 但不太冗长,也许它有 PHP 或任何现有 PHP 库的包装器。它只需要告诉我传递给它的字符串是否具有有效的 js 代码,没有语法错误。

欢迎提出任何建议以及实施指南。我是新手,所以非常欢迎任何指导。

我发现的一种方法是使用 Node js 命令

node -c script.js

仅当脚本中存在任何语法错误时,才会向控制台打印一条消息。但这又需要我将 node.js 安装到服务器中。因此,如果可能的话,我不想依赖任何额外的安装程序。我认为即使是本地二进制文件也可能会这样做。

javascript php syntax token detection
1个回答
0
投票

为了满足在 PHP 环境中验证 JavaScript 代码的要求,而又不引入 Node.js 等严重依赖项,您可以考虑使用基于 PHP 的 JavaScript linter 或解析器。以下是一些您可能会觉得有用的方法和工具:

  1. JShrink:JShrink 是一个流行的 PHP 库,主要是一个 JavaScript 压缩器,但可用于检测 JavaScript 代码中的语法错误。它是轻量级的,不需要任何外部依赖。然而,它的错误检测可能不像专用的 linter 那样全面。

实施:

通过 Composer 安装:composer 需要 tedivm/jshrink 在 PHP 脚本中使用:

use JShrink\Minifier;

try {
    $minifiedJs = Minifier::minify($yourJsCode);
   // If no exception, the JS code is syntactically correct
} catch (Exception $e) {
   // Handle syntax error
}
  1. Peast:Peast 是一个解析 ECMAScript(JavaScript)的 PHP 库,可用于检查语法错误。它提供有关语法错误的详细信息,并遵循最新的 ECMAScript 标准。

实施:

通过 Composer 安装:composer 需要 mck89/peast 在 PHP 脚本中使用: 使用 Peast\Peast;

try {
    Peast::latest($yourJsCode)->parse();
    // If no exception, the JS code is syntactically correct
} catch (Exception $e) {
    // Handle syntax error
}
© www.soinside.com 2019 - 2024. All rights reserved.