[英]How do I rewrite PHP code blocks before they are passed to the interpreter?
我想要做的是为PHP编写一个解析器,该解析器解释空格而不是括号。 我可以重写位并输出PHP,但是我不确定如何最好地将其集成到应用程序中。
在理想的世界中,我想最好的办法是在文件的顶部放置一个include,这会在将其后面的所有代码块传递给解释器时,将它们后面的所有代码块重新编写为适当的PHP语法,但是我不是请注意,可以以这种方式传递代码块。
另一种选择是将其编写为服务器扩展,但是我不希望这样做,因为它使它难以访问。
有没有一种简单的方法可以构造这个?
使用Stream Wrappers可以做到这一点。
这样,您基本上可以在实际解释之前读取和重新编写PHP读取的任何代码。 使用fopen()
, fwrite()
, include
, require
, file_get_contents()
等。
因此,在您的情况下,您可以侦听require(_once)
或include(_once)
任何文件并使用所需的代码。 您将获得完整的代码在一个变量中,并可以使用regex简单地对字符串进行各种替换,而不能进行其他替换。
唯一的缺点是,由于没有被include
或require
捕获,因此index.php
无法使用此方法。 但是stream wrapper
可以捕获其中包含的任何其他代码文件。
这是有关使用该方法的插件系统的文章。 也许有什么帮助。
http://phpmyweb.net/2012/04/26/write-an-awesome-plugin-system-in-php/
在此您还将找到带有插件代码源的guthub页面的链接。 在这里,您基本上可以看到如何设置Stream Wrapper
类。 从那里开始,您可以编写自己的代码,因为您不必像插件那样拦截任何方法调用等。
我认为您的包含想法不会像上述那样起作用。 由于代码将缺少花括号,因此它可能不会通过普通的PHP解析器而不会抛出500错误。 因此,您要包含的文件将永远无法工作。
相反的方法可能会起作用。 编写一个解析器脚本,并使其读取并执行您的“空白” PHP文件。
URL可能看起来像这样: mydomain.com/my-parsing-script.php?file=script/to/parse.php
然后,您将编辑.htaccess以重写所有URL,以使该内容对用户不可见。
解析脚本只需要打开“空白”文件,并在将脚本传递给eval()之前做一些正则表达式魔术即可;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.