我有几个PHP文件,我想在不使用PHP引擎的情况下手动解析数组的值。
他们看起来像这样:
$LANG['help']['attribute_label'] = 'Label';
其他人只有一个属性,如:
$LANG['adm_something'] = 'Label';
我需要提取标签'没有所有行的引号。我还没有找到匹配的正则表达式模式。我也对其他选择持开放态度。
答案 0 :(得分:0)
preg_match("/\\\$LANG['a-zA-Z\[\]_]*\s=\s\'([A-Za-z0-9]+)/", $line, $matches);
$matches[1]
将在两个提供的案例中包含单词Label
答案 1 :(得分: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);
这将找到文件中的所有变量声明,使用单引号或双引号,以及整数值(它们不一定需要在引号中)或甚至数组。请注意,它只能在整个值在一行的情况下工作 - 而且它对整体正则表达式来说非常愚蠢。但它应该适用于这种情况。
答案 2 :(得分:0)
preg_match_all('/= \'(.+)\';/', '$LANG[\'help\'][\'attribute_label\'] = \'Label\';', $matches );
print_r( $matches );
Array
(
[0] => Array
(
[0] => = 'Label';
)
[1] => Array
(
[0] => Label
)
)