0

我有几个 PHP 文件,我想在不使用 PHP 引擎的情况下手动解析数组的值。

它们看起来像这样:

$LANG['help']['attribute_label'] = 'Label';

而其他的只有一个属性,像这样:

$LANG['adm_something'] = 'Label';

我需要从所有行中提取没有引号的“标签”。我还没有找到匹配的正则表达式模式。我也愿意接受其他选择。

4

3 回答 3

0
preg_match_all("/(\\\$[^=]*)[\s\t\r\n]*=[\s\t\r\n]*([^\r\n]*);/s", file_get_contents('-- PUT THE FILE NAME HERE--'), $matches);
$results = array();
foreach ($matches[1] as $key=>$var) {
    $results[trim($var)] = trim(trim($matches[2][$key], '\'"'));
}
var_dump($results);

这将找到文件中的所有变量声明,使用单引号或双引号,以及整数值(它们不一定需要在引号中)甚至数组。请注意,它仅适用于整个值在一行上的情况 - 并且总体上正则表达式非常愚蠢。但它应该适用于这种情况。

于 2013-03-07T16:26:30.537 回答
0
preg_match_all('/= \'(.+)\';/', '$LANG[\'help\'][\'attribute_label\'] = \'Label\';', $matches );

print_r( $matches );


Array
(
[0] => Array
    (
        [0] => = 'Label';
    )

[1] => Array
    (
        [0] => Label
    )
)
于 2013-03-07T16:28:13.913 回答
0
preg_match("/\\\$LANG['a-zA-Z\[\]_]*\s=\s\'([A-Za-z0-9]+)/", $line, $matches);

$matches[1]在两种提供的情况下都将包含单词 Label

于 2013-03-07T16:19:14.397 回答