将PHP文件作为文本读取,提取变量值


Read PHP files as text, extract variable values

我需要浏览文件夹中的php文件,即列出该文件夹中的所有php文件,读取每个文件的内容,检查代码中是否存在很少的预定义变量名称,如果存在,则读取它们的值。

例如,假设一个特定的 php 文件包含以下变量。

$value1 = 'value of one';
$value2 = 'value of two';

然后我的脚本应该能够读取该文件的内容,提取 $value 1 和 $value 2 的值。

有没有更简单的方法可以做到这一点。

如果您能提出解决方案,真的是一个很大的帮助,我们将不胜感激。

我认为正则表达式有帮助,但我不明白如何构建表达式以匹配代码中的变量名称。到目前为止,我没有代码,如果我进一步澄清,我正在寻找一个正则表达式或类似的解决方案来匹配/搜索类似于变量名称的模式,变量名称是众所周知的。

假设找到搜索变量,然后为了提取"在代码中分配"的变量值,我看到的可能的解决方案是字符串操作,我的意思是用空字符串替换包含变量值以外的变量的行的内容。除了形式,还有一种方法可以获取值。

假设在代码中,

所以正则表达式或其他解决方案是搜索字符串"$value 1"和"$value 2">

然后应该可以读出"值一"和"值二"作为代码字符串中检测到的相应变量的值。

您可以

requireinclude文件并比较前后的$GLOBALS数组值。当然,如果包含的文件包含立即执行的其他代码,这将不起作用。

您可以使用 PHP 反射来检查类。例如

<?php
class Foo {
    public $foo  = 1;
    public $bar  = 2;
}
$foo = new Foo();
$reflect = new ReflectionClass($foo);
$props   = $reflect->getProperties();
foreach ($props as $prop) {
    print "Property Name: " . $prop->getName() . "'n";
    print "Property Value: " . $prop->getValue($foo) . "'n";
}

迭代可以使用 glob 的文件的目录

我希望这将解决您的问题。