PHPLaravel - 从文件中找到并读取 "键值对"。

问题描述 投票:1回答:3

我想存储一些文本信息,但我不想使用数据库。例如, 有一个文件:

key1: some text information 1
key2: some text information 2
key3: another text information

我想知道, 用PHP或者Laravel有什么最快捷的方法可以从这个文件中找到一个特定的值?

我可以使用 foreach(file('yourfile.txt') as $line) {} 循环来存储文本行到数组中,然后找到特定键的行,但也许有更短或更好的方法来做这件事。

php laravel key-value file-read
3个回答
2
投票

如果所有的行都是相同的格式([key]: [value])您可以简单地使用 explode(": ", $line) 获取值,然后将它们重写成一个PHP数组。

// getData('yourfile.txt') returns an associative array
function getData($file) {
    $data = file($file);
    $returnArray = array()
    foreach($data as $line) {
        $explode = explode(": ", $line);
        $returnArray[$explode[0]] = $explode[1];
    }

    return $returnArray;
}

4
投票

我认为你应该用数组代替文本文件

在appconfig目录下创建一个新文件。我们把它叫做constants.php

在那里你必须返回一个配置值的数组。

return [
    'myData' => [
        'key1' => 'www.domain.es',
        'key2' => 'www.domain.us'
        // etc
    ]
];

你可以通过以下方式访问它们

Config::get('constants.myData');
// or if you want a specific one
Config::get('constants.myData.key1');

而且你也可以设置它们

Config::set('myData.key1', 'test 123');

0
投票

@leuans 的回答是下面这个函数的基础,它对我来说效果更好,因为它也能去掉换行符,并且可以配置分隔符。

// https://stackoverflow.com/a/27917087/1497139
// getConfig('yourfile.txt','separator') returns an associative array
// example: getConfig('config.ini',': ')
function getConfig($file,$separator) {
    $data = file($file);
    $returnArray = array();
    foreach($data as $line) {
        $parts=explode($separator, $line);
        $name=trim($parts[0]);
        $value=trim($parts[1]);
        $returnArray[$name] = $value;
    }
    return $returnArray;
}
© www.soinside.com 2019 - 2024. All rights reserved.