隔离字符串中数组变量的值

时间:2013-08-19 18:41:45

标签: php regex

假设我在php文件中有一行:

$config['fw_ls'] = 'some value';

我想获得引号之间的值。我尝试过的是如下组合:

preg_match('/\$config\[\'fw_ls\'\] = \'([^\'])*\';/',$sData,$aK);
var_dump($aK);

可悲的是,我似乎无法获得引号之间的值,在上面的例子中它返回字符't'。我真的不明白我做错了什么。我希望正则表达式会从引用开始搜索并获取所有内容,直到找到另一个引号。但这似乎并不完全正确。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可能想要使用解析器,然后获取类似数组索引值的内容。这是一个开源PHP解析器的示例(在PHP中):

https://github.com/nikic/PHP-Parser

正则表达式不是解析器,因此如果您尝试解析仲裁php行,或者如果这是特殊情况下正则表达式可能是您的朋友,则很难根据您的问题判断。

答案 1 :(得分:0)

试试这个:

$text = "\$config['fw_ls'] = 'some value';";
preg_match("#\\\$config\['fw_ls'\]\s*=\s*'([^']+)';#", $text, $match);
print_r($match);

Array
(
    [0] => $config['fw_ls'] = 'some value';
    [1] => some value
)