在C#中快速解析PHP

7 php c# parsing

我需要在C#中解析PHP文件.我们基本上要求另一个国家的一些开发人员上传PHP文件,一旦上传,我们需要检查php文件并获取所有方法和类/函数等的列表.

我想过使用一个正则表达式,但是如果一个函数属于一个类等我就无法进行锻炼,所以我想知道是否已经有了'那里'会解析PHP文件并吐出它的函数(我正在尝试避免写一个完整的AST实现).

有谁有想法吗?我看了Coco/R但是找不到PHP语法文件.我正在使用.NET 2.0和C#.

cle*_*tus 18

为什么在C#中呢?在PHP中,这是微不足道的.使用该token_get_all()函数,它会将PHP文件分解为一个词汇流,您可以通过编写有限状态机来确定类和方法的列表.

无论你做什么,都不要尝试用正则表达式来做这件事.这将是令人难以置信的乏味和容易出错.

编辑:执行此操作有三种基本可能性:

  1. 用PHP做.这将是最快(开发)和最简单的选择;
  2. 运行命令行PHP脚本来执行此操作或生成一系列可由C#程序解释的标记.这是下一个最容易的;
  3. 使用Phalanger,PHP的端口到.Net框架.这可能更适合管理,因为它仍然是所有.Net代码; 要么
  4. 使用Quercus,一个PHP的端口到Java VM.

其他任何事情都将涉及编写PHP解析器(大量工作)或使用非常脆弱的正则表达式,这将是一个不可靠的支持噩梦.

关注PHP的假设"安全漏洞"有几个问题:

  1. 任何框架或技术堆栈都可能存在安全漏洞.你的系统管理员只允许.Net在抗议Java的情况下有效地表明非理性偏见.我说这是一个长期的Java开发人员:Java,.Net和PHP都有安全漏洞;
  2. 您可以从命令行运行PHP,因此它不会提供任何HTTP请求,从而将安全漏洞的问题基本上减少为零;
  3. 如果您担心内部安全威胁(来自有权访问该框的人),只需将PHP CLI可执行文件限制为只能由您的程序所在的组执行.