我需要一个正则表达式来搜索数组,然后返回该键的值。
例如:
我想获得var1
密钥的值。
我的配置
<?php
return [
'var1' => 'test1',
'var2' => 'test2',
'var3' => 'test3'
];
?>
然后它应该返回test1
答案 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。
请注意,如果您使用return
或include
来提取不受信任或外部脚本,则通常的安全注意事项适用。这将在上面链接的文档中讨论。
此外,如果您所包含的文件包含语法错误,那么您可能会获得include
或类似内容,但我想这是显而易见的!
修改强>
最后,我应该指出,您的问题不会询问如何将更新后的配置保存回文件中,但您确实在下面留下了评论,表明您也希望这样做。
但是,如果您想更新并保留文件中的配置,我肯定会使用更具延展性的方法来向/从磁盘写入/读取此数据 - 可能是require
和parse error
,{ {1}}和json_encode()
。
尽管如此,这是一个天真的解决方案,您可以在其中编写更新的配置:
json_decode
进一步阅读:
希望这会有所帮助:)