我正在开发一个大型 PHP 代码库;我想将 PHP 代码与 HTML 和 JavaScript 分开。 (我需要对 PHP 代码进行多次自动搜索和替换,对 HTML 进行不同的搜索和替换,对 JS 进行不同的自动搜索和替换)。有没有一个好的解析器引擎可以为我分离出 PHP?我可以使用正则表达式来做到这一点,但它们并不完美。也许我可以在 ANTLR 中构建一些东西,但最好是一个现有的解决方案。
我应该澄清:我不想要也不需要完整的 PHP 解析器。只需知道给定的令牌是否是:
- PHP代码
- PHP 单引号字符串
- PHP双引号字符串
- PHP 评论
- 不是 PHP,而是 HTML/JavaScript
怎么样分词器 http://www.php.net/manual/en/intro.tokenizer.php直接内置于 PHP 本身吗?
分词器函数提供了
PHP 分词器的接口
嵌入到 Zend 引擎中。使用
这些函数你可以自己编写
PHP源码分析或修改
工具,而不必处理
词汇上的语言规范
等级。
您在注释中询问是否可以从标记化输出重新生成代码 - 但您可以,所有空格都保留为 T_WHITESPACE 标记。以下是将标记化输出转回代码的方法:
$regenerated='';
$tokens = token_get_all($code);
foreach($tokens as $idx=>$t)
{
if (is_array($t))
{
//do something with string and comments here?
switch($t[0])
{
case T_CONSTANT_ENCAPSED_STRING:
break;
case T_COMMENT:
case T_DOC_COMMENT:
break;
}
$regenerated.=$t[1];
}
else
{
$regenerated.=$t;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)