【问题标题】:Read PHP files as text, extract variable values以文本形式读取 PHP 文件,提取变量值
【发布时间】:2016-02-11 05:20:23
【问题描述】:

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

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

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

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

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

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

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

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

假设在代码中,

所以正则表达式或其他解决方案是搜索字符串“$value1”和“$value2”

那么应该可以读出“一的值”和“二的值”作为在代码字符串中检测到的各个变量的值。

【问题讨论】:

  • 这些文件中有什么,为什么这些变量如此重要?
  • 这是我的一位客户使用的自定义迷你 cms。他有许多内容页面作为 php 文件,某些内容在那里定义为变量值。现在他需要我在前端实现一个搜索机制,有一个爬虫 cron 作业,它遍历文件并读取内容。诚然,他所拥有的并不是完美的解决方案,但在这种情况下,我必须做他想做的。
  • 在将内容添加到数据库时使用我提出的方法,然后从那里搜索?
  • 不幸的是,客户端没有让我访问他的 CMS 或数据库,我只需要搜索生成的内容 php 文件。 :)

标签: php regex file text


【解决方案1】:

您可以做什么requireinclude 文件并比较$GLOBALS-array 前后的值。当然,如果包含的文件包含其他立即执行的代码,这将不起作用。

【讨论】:

  • 谢谢。但是在这种情况下,可能要检查的文件太多了,所以我认为所有这些文件都存在实际问题。
【解决方案2】:

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

希望这能解决你的问题。

【讨论】:

  • 谢谢,但是要检查的 php 文件不是类,它们只包含程序 php 代码。
  • IMO,对于元编程,你必须遵循一些标准,即面向对象的范式。因此,将您的程序代码转换为 oo,然后使用 REFLECTION 的丰富功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 2022-10-13
相关资源
最近更新 更多