我对PHP很新,并且已经完成了一些轻量级的网页设计,但我正在尝试将文本文件解析为行和列,而我却无法让它返回正确的格式。 这是我的php文件
<?php
$txt_file = file_get_contents('/var/www/html/config/Configfiles/showpeers/output.txt');
$txt_file = str_replace('/\s+/', '_', $txt_file);
$rows = explode("\n", $txt_file);
//array_shift($rows);
foreach($rows as $row => $data)
{
//get row data
$row_data = explode('_', $data);
$info[$row]['Name/username'] = $row_data[0];
$info[$row]['Host'] = $row_data[1];
$info[$row]['Dyn'] = $row_data[2];
$info[$row]['Forceport'] = $row_data[3];
$info[$row]['Comedia'] = $row_data[4];
$info[$row]['ACL'] = $row_data[4];
$info[$row]['Port'] = $row_data[4];
$info[$row]['Status'] = $row_data[7];
$info[$row]['Description'] = $row_data[8];
//display data
echo ' PEER: ' . $info[$row]['Name/username'] . '<br />';
echo ' Host: ' . $info[$row]['Host'] . '<br />';
echo ' Dyn: ' . $info[$row]['Dyn'] . '<br />';
echo ' Forceport: ' . $info[$row]['Forceport'] . '<br />';
echo ' Comedia: ' . $info[$row]['Comedia'] . '<br />';
echo ' ACL: ' . $info[$row]['ACL'] . '<br />';
echo ' Port: ' . $info[$row]['Port'] . '<br />';
echo ' Status: ' . $info[$row]['Status'] . '<br />';
echo ' Description: ' . $info[$row]['Description'] . '<br />';
echo '<br />';
}
?>
TXT文件是
名称/用户名主机Dyn Forcerport Comedia ACL端口状态说明
1001(未指定)D自动(否)否0未监视
1002(未指定)D自动(否)否0未监视
1003(未指定)D自动(否)否0未监视
1401/1401 192.168.21.94 D自动(否)否58790正常(50 ms)
1402(未指定)D自动(否)否0未监控
1403(未指定)D自动(否)否0未监视
1404(未指定)D自动(否)否0未监视
1405(未指定)D自动(否)否0未监视
1406(未指定)D是是0未监控
1407(未指定)D是是0不受监控
1408(未指定)D是是0不受监控
1409(未指定)D自动(否)否0未监视
1410(未指定)D自动(否)否0未监视
1411(未指定)D自动(否)否0未监视
1412(未指定)D自动(否)否0未监控
1413(未指定)D自动(否)否0未监视
1414(未指定)D自动(否)否0未监视
1415(未指定)D自动(否)否0未监控
1420(未指定)D自动(否)否0未监视
2801(未指定)D自动(否)否0未监视
2803(未指定)D自动(否)否0未监视
2805(未指定)D自动(否)否0未监视
MCD_Demo 192.168.22.37是是5060 OK(19 ms)
NCP 192.168.21.74是是5060无法使用
STG01 192.168.27.50是是5060无法使用
switchvox / switchvox(未指定)D是是0未知
26 sip peers [监控:2在线,3离线未监控:0在线,21离线]
我的输出如下图所示。我试图让行填充空格,但它无法正常工作。
谢谢
答案 0 :(得分:0)
谢谢你们,我能够弄清楚。下面是新的PHP
<?php
$txt_file =
file_get_contents('/var/www/html/config/Configfiles/showpeers/output.txt');
$txt_file = preg_replace('/\h+/', ' ', $txt_file);
$rows = explode("\n", $txt_file);
array_shift($rows);
array_pop($rows);
array_pop($rows);
foreach($rows as $row => $data)
{
//get row data
$row_data = explode(' ', $data);
$info[$row]['Name/username'] = $row_data[0];
$info[$row]['Host'] = $row_data[1];
$info[$row]['Dyn'] = $row_data[2];
$info[$row]['Forceport'] = $row_data[3];
$info[$row]['Comedia'] = $row_data[4];
$info[$row]['ACL'] = $row_data[4];
$info[$row]['Port'] = $row_data[4];
$info[$row]['Status'] = $row_data[7];
$info[$row]['Description'] = $row_data[8];
//display data
echo ' PEER: ' . $info[$row]['Name/username'] . '<br />';
echo ' Host: ' . $info[$row]['Host'] . '<br />';
//echo ' Dyn: ' . $info[$row]['Dyn'] . '<br />';
//echo ' Forceport: ' . $info[$row]['Forceport'] . '<br />';
//echo ' Comedia: ' . $info[$row]['Comedia'] . '<br />';
//echo ' ACL: ' . $info[$row]['ACL'] . '<br />';
//echo ' Port: ' . $info[$row]['Port'] . '<br />';
echo ' Status: ' . $info[$row]['Status'] . '<br />';
//echo ' Description: ' . $info[$row]['Description'] . '<br />';
echo '<br />';
} ?&GT;