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

时间:2016-02-11 05:20:23

标签: php regex file text

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

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

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

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

有没有更简单的方法呢。

如果你能提出一个解决方案并且非常感激,那真是一个很好的帮助。

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

假定搜索变量被找到,然后用于提取在代码中分配的变量值&#39; ,我看到的可能的解决方案是字符串操作,我的意思是用空字符串替换包含变量值而不是变量值的行的内容。除了有一种方法可以获得价值。

假设在代码中,

所以正则表达式或其他解决方案是搜索字符串&#34; $ value1&#34; &安培; &#34; $值2&#34;

然后应该可以读出一个&#39;的价值。 &安培; &#39;值两个&#39;作为代码字符串中检测到的各个变量的值。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以使用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

的文件的目录

我希望这能解决你的问题。