我要做的是为PHP编写一个解析器来解释空格而不是括号。我可以重写位和输出PHP,但我不确定如何最好地将它集成到应用程序中。
在理想的世界中,我想最好的方法是在文件的顶部放置一个include,然后将所有代码块重写为正确的PHP语法,因为它们被传递给解释器,但是我不知道可以用这种方式传递代码块。
另一种选择是将其写为服务器扩展,但我不想这样做,因为它使其不易访问。
有没有一种简单的方法来构建这个?
答案 0 :(得分:3)
有一种方法可以使用Stream Wrappers执行此操作。
有了这个,您基本上可以阅读并重新编写PHP 在 之前读取的任何代码。使用fopen()
,fwrite()
,include
,require
,file_get_contents()
等。
因此,在您的情况下,您可以侦听require(_once)
或include(_once)
的任何文件并使用您喜欢的代码。你将把整个代码放在一个变量中,然后你就可以用正则表达式和字符串来完成各种替换。
唯一的缺点是,index.php
无法使用此方法,因为任何include
都抓住 或require
。但是stream wrapper
可以捕获其中包含的任何其他代码文件。
这是一篇关于使用该方法的插件系统的文章。也许它可以提供任何帮助。
http://phpmyweb.net/2012/04/26/write-an-awesome-plugin-system-in-php/
在那里你还会找到一个带有插件代码源的guthub页面的链接。在那里你基本上可以看到如何设置你的Stream Wrapper
课程。从那里你可以编写自己的代码,因为你不必像插件那样拦截任何方法调用等。
答案 1 :(得分:0)
我不认为你的包含想法会如所描述的那样有效。由于代码将丢失大括号,它可能无法通过普通的PHP解析器而不会抛出500错误。因此,您要包含的文件永远不会完成其工作。
相反的方法可能有效。编写一个解析器脚本,让它读取并执行你的“空白”PHP文件。
网址可能如下所示: mydomain.com/my-parsing-script.php?file=script/to/parse.php
然后你编辑.htaccess来重写你的所有网址,使这些东西对用户不可见。
解析脚本只需打开“空白”文件并在将脚本传递给eval()之前执行一些正则表达式魔术;