Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在字符串中隔离数组变量的值_Php_Regex - Fatal编程技术网

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

Php 在字符串中隔离数组变量的值,php,regex,Php,Regex,假设我在php文件中有一行: $config['fw_ls'] = 'some value'; 我想得到引号之间的值。我尝试的是如下组合: preg_match('/\$config\[\'fw_ls\'\] = \'([^\'])*\';/',$sData,$aK); var_dump($aK); 遗憾的是,我似乎无法获得引号之间的值,在上面的示例中,它返回字符“t”。我真的不明白我做错了什么。我希望正则表达式会从报价开始搜索并获取所有内容,直到找到另一个报价。但这似乎并不完全正确 任何帮

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

$config['fw_ls'] = 'some value';
我想得到引号之间的值。我尝试的是如下组合:

preg_match('/\$config\[\'fw_ls\'\] = \'([^\'])*\';/',$sData,$aK);
var_dump($aK);
遗憾的是,我似乎无法获得引号之间的值,在上面的示例中,它返回字符“t”。我真的不明白我做错了什么。我希望正则表达式会从报价开始搜索并获取所有内容,直到找到另一个报价。但这似乎并不完全正确


任何帮助都将不胜感激。

您可能希望使用解析器,然后获取数组索引值之类的内容。下面是一个开源php解析器的示例(在php中):

正则表达式不是解析器,因此很难根据您的问题判断您是否试图解析任意的php行,或者这是一种特殊情况,正则表达式可能是您的朋友。

尝试以下方法:

$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
)

您想要哪种输出?这似乎是解决实际问题的一种糟糕方法。请告诉我们更多关于这个问题的信息,而不是专注于解决这个问题的某个特定尝试。我认为您在解释中遗漏了一些东西,因为引号之间的值就是整个值。以下是您需要的:preg_match('/=\s+\'(.'?\'/',$sData,$aK);我不是把这个作为一个答案,因为有一个很高的可能性,你的方法是错误的