我从文本文件中读入并将变量分配给列表中的数组。我是通过爆发线爆炸来实现的。
但是,我还想修剪输入两侧的任何空白区域。根据我的理解和测试,这正是trim()的作用。
我想缩短它,以便它重复性更低,更容易阅读。
$config = file_get_contents('scripts/secure/config.txt');
list($host, $dbname, $username, $password) = explode ("\n", $config);
$host = trim($host);
$dbname = trim($dbname);
$username = trim($username);
$password = trim($password);
我尝试过几种不同的方法,但似乎都没有。我上面所做的工作,但我正在寻找单线方法。
答案 0 :(得分:4)
我有一种更简单的方式回答here。
使用array_map:
list($host, $dbname, $username, $password) = array_map('trim', explode("\n", $config));
答案 1 :(得分:2)
使用preg_split()
。
list($host, $dbname, $username, $password) = preg_split("/\\s*\\n\\s*/",trim($config));
答案 2 :(得分:0)
我相信这足以回答我的问题。除非有人可以提出一些你可以实际保存变量名称的东西,而不必经历并重命名它们(这将是非常棒的。)
我做到了。
$config = file_get_contents('scripts/secure/config.txt');
$configData = array_map('trim', explode("\n", $config));
只是按数组的位置引用我的数据。我知道它应该在哪里,所以这是有效的。
这里的帖子特别帮助我找到了答案。
How can I explode and trim whitespace?
我仍然希望在一行中按名称使用变量。如果有人知道如何,那么我会给你积分。
由于
答案 3 :(得分:0)
这样的东西? :
$config_names = array("host", "dbname", "username", "password");
$config = file_get_contents('scripts/secure/config.txt');
$data = array_combine($config_names), array_map("trim", explode ("\n", $config)));
foreach($data as $k => $v){
$$k = $v;
}
print $host.":".$dbname.":".$username.":".$password;