将txt文件解析为PHP

时间:2017-09-12 14:11:39

标签: php

我对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离线]

我的输出如下图所示。我试图让行填充空格,但它无法正常工作。

enter image description here

谢谢

1 个答案:

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