我有一个名为1month.ssh
的文本文件:
Host: m-sg5.portssh.com
Username: portssh.com-myuser
Password: mypass
Port: 443
Info: Your Account will expire on 02-January-2017
我尝试使用以下命令创建基于该文件的数组:
$infossh = parse_ini_string(preg_replace('/^([^:]+): (.+)$/m','$1 = $2',file_get_contents('/home/ab/gconf/'.$_POST['account'])));
$_POST['account']
是指1month.ssh
。我的目标是当我回显数组时,每个值应该是这样的:
$infossh['Host'] = "m-sg5.portssh.com"
$infossh['Username'] = "portssh.com-myuser"
$infossh['Password'] = "mypass"
$infossh['Port'] = "443"
$infossh['Info'] = "Your Account will expire on 02-January-2017"
但是使用该代码我得到以下错误:
Warning: syntax error, unexpected BOOL_TRUE in Unknown on line 5 in /www/ssh.php on line 218
我该如何解决这个问题?
附加信息:
我有另一个档案sgdo.ssh
:
Host: x-sgdo19.serverip.co
Username: fastssh.com-myuser
Password: mypass
Port: 443
Info: Date Expired : 10-December-2016
但是我没有收到此文件的错误,只有在我打开1month.ssh
答案 0 :(得分:1)
Host: m-sg5.portssh.com
Username: portssh.com-myuser
Password: mypass
Port: 443
Info: Your Account will expire on 02-January-2017
此处,Info
的值应包含在引号中。
修改强>
$infossh = file('1month.ssh', FILE_IGNORE_NEW_LINES);
$new_infossh = [];
array_walk($infossh, function($element, $index) {
global $new_infossh;
$element_temp = explode(': ', $element);
$new_infossh[$element_temp[0]] = $element_temp[1];
});
var_dump($new_infossh);
我已将上面的代码修改为更简化的代码。
$infossh = file('1month.ssh', FILE_IGNORE_NEW_LINES);
$new_infossh = [];
foreach($infossh as $value) {
$value_arr = explode(': ', $value);
$new_infossh[$value_arr[0]] = $value_arr[1];
}
var_dump($new_infossh);
在我看来,这些是你可以在不使用正则表达式的情况下实现的其他两种方法。希望它有效!