警告:语法错误,意外BOOL_TRUE

时间:2016-12-03 17:14:58

标签: php

我有一个名为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

时才会出现错误

1 个答案:

答案 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);

在我看来,这些是你可以在不使用正则表达式的情况下实现的其他两种方法。希望它有效!