Php 从文件中提取字符串和值

Php 从文件中提取字符串和值,php,arrays,Php,Arrays,我在php中有一个配置文件,其中包含一些值,为了提取这些值,我使用了一种方法,有点长,我的问题是,是否可以用php的其他方法来实现这一点 在PHP文件config_test.dat中,我有这个 <?php $opt[v1]="house 1"; $opt[v2]="house 2"; $opt[v3]="house 3"; $opt[v4]="house 4"; $opt[v5]="house 5"; ?> 最后我没问题,但我认为可以编写一个更容易提取数据的脚本,这是可能的?您可以

我在php中有一个配置文件,其中包含一些值,为了提取这些值,我使用了一种方法,有点长,我的问题是,是否可以用php的其他方法来实现这一点

在PHP文件config_test.dat中,我有这个

<?php
$opt[v1]="house 1";
$opt[v2]="house 2";
$opt[v3]="house 3";
$opt[v4]="house 4";
$opt[v5]="house 5";
?>

最后我没问题,但我认为可以编写一个更容易提取数据的脚本,这是可能的?

您可以简单地包含该文件并使用数组:

<?php
$opt[v1]="house 1";
$opt[v2]="house 2";
$opt[v3]="house 3";
$opt[v4]="house 4";
$opt[v5]="house 5";
?>

<?php
include_once('config_test.php');
foreach ($opt as $key => $value) {
    echo $key . '-' . $value;
}
?>

我假设您不知道数组名
$opt
。这是解释为什么不在
$opt
数组上包含config和
foreach
的唯一方法:

foreach(get_config() as $key => $value) {
    echo "{$key}---{$value}";
}

function get_config() {
    include('config_test.dat');
    return get_defined_vars();
}

config_test.dat不是有效的php文件, 因此,也许使用正则表达式来解析它是个好主意:

<?php
$data=file_get_contents("config_test.dat");  

preg_match_all('/\$opt\[([^\]]+)\]="([^"]+)";/',$data,  $out);

$res = array_combine($out[1], $out[2]);
print_r($res);

包含该文件怎么样?这样就可以在数组中包含值。(将v1、v2等更改为实际的索引)。在文件中我有这样一句话:很高兴听到你能标记我的答案,解决了你的问题:)
foreach(get_config() as $key => $value) {
    echo "{$key}---{$value}";
}

function get_config() {
    include('config_test.dat');
    return get_defined_vars();
}
<?php
$data=file_get_contents("config_test.dat");  

preg_match_all('/\$opt\[([^\]]+)\]="([^"]+)";/',$data,  $out);

$res = array_combine($out[1], $out[2]);
print_r($res);