php正则表达式搜索数组键并返回值

时间:2015-12-13 19:46:19

标签: php regex

我需要一个正则表达式来搜索数组,然后返回该键的值。

例如: 我想获得var1密钥的值。

我的配置

<?php

return [
    'var1' => 'test1',
    'var2' => 'test2',
    'var3' => 'test3'
];

?>

然后它应该返回test1

1 个答案:

答案 0 :(得分:1)

这是一个非正统的问题,但这里有一个直截了当的答案,不需要正则表达式,所以我会提出这个问题。

假设您的配置文件名为Collections.singleton(null)并包含您在示例中提供的代码段:

Collections.<T>singleton(null)

您实际上可以将config.php<?php return [ 'var1' => 'test1', 'var2' => 'test2', 'var3' => 'test3', ]; 的返回值分配给变量。例如,在另一个脚本中(假设您在同一目录中),您可以这样做:

include

这会产生:

require

我原本有点惊讶你可以在函数/方法的上下文之外使用<?php // your config file... $file = __DIR__ . '/config.php'; // ensure the file exists and is readable if (!is_file($file) || !is_readable($file)) { throw new RuntimeException( sprintf('File %s does not exist or is not readable!', $file) ); } // include file and assign to variable `$config` // which now contains the returned array $config = include $file; echo 'original config:' . PHP_EOL; print_r($config); // update config key `var1` $config['var1'] = 'UPDATED!'; echo 'updated config:' . PHP_EOL; print_r($config); ,但它完全有效。您每天都会学到新的东西......这个用例实际上记录在original config: Array ( [var1] => test1 [var2] => test2 [var3] => test3 ) updated config: Array ( [var1] => UPDATED! [var2] => test2 [var3] => test3 ) 的文档中 - 有关详细信息,请参阅Example #5 include and the return statement

请注意,如果您使用returninclude来提取不受信任或外部脚本,则通常的安全注意事项适用。这将在上面链接的文档中讨论。

此外,如果您所包含的文件包含语法错误,那么您可能会获得include或类似内容,但我想这是显而易见的!

修改

最后,我应该指出,您的问题不会询问如何将更新后的配置保存回文件中,但您确实在下面留下了评论,表明您也希望这样做。

但是,如果您想更新并保留文件中的配置,我肯定会使用更具延展性的方法来向/从磁盘写入/读取此数据 - 可能是requireparse error,{ {1}}和json_encode()

尽管如此,这是一个天真的解决方案,您可以在其中编写更新的配置:

json_decode

进一步阅读:

希望这会有所帮助:)