2016-08-18 2 views
1

Hallo alle zusammen, ich habe txt-Datei mit folgendem Inhalt:Filter Textdatei in HTML-Tabelle in PHP

Name  : MyName1 
    State  : Apt 
    PathName : C:\xx\MyName1.txt 

    Name  : MyName2 
    State  : Apf 
    PathName : C:\xx\MyName2.txt 

    Name  : MyName3 
    State  : Apf 
    PathName : C:\xx\MyName3.txt 

Gibt es eine Möglichkeit, diese Textdatei in HTML TABLE zu konvertieren von PHP-Code verwenden, um in etwa so aussehen:

 Name  State PathName 
     MyName1  Apt  C:\xx\MyName1.txt 
     MyName2  Apf  C:\xx\MyName2.txt 
     MyName3  Apf  C:\xx\MyName3.txt 
+2

Bitte zeigen Sie uns, Sie eine Anstrengung in irgendeiner Weise getroffen haben, um zu versuchen und dies selbst zu lösen, ist dieses Forum nicht für Menschen tun, um Ihre Arbeit zu machen;) –

+5

'ist es auf jeden Fall ". Ja da ist. –

Antwort

2

Sie eine Mischung aus file_get_contents() versuchen könnte, wie der kommentierten Code foreach() & preg_replace() dass für unten zeigt:

INHALT TXT-Datei:

Name  : MyName1 
    State  : Apt 
    PathName : C:\xx\MyName1.txt 

    Name  : MyName2 
    State  : Apf 
    PathName : C:\xx\MyName2.txt 

    Name  : MyName3 
    State  : Apf 
    PathName : C:\xx\MyName3.txt 

TABLE CREATION ALGORITHM:

<?php 

     $txtFile  = __DIR__ . "/test.txt"; //<== PATH TO THE TXT FILE 
     $txtFileData = file_get_contents($txtFile); 

     // CONVERT $txtFileData TO ARRAY BY SPLITTING AT THE NEW-LINE BOUNDARY. 
     $arrTxtData  = explode("\n", $txtFileData); 
     $sections  = array(); 
     $index   = 0; 

     // LOOP THROUGH THE ARRAY (FROM ABOVE) AND BUILD SECTION GROUPS 
     // USING THE EMPTY LINE AS THE CUE-POINT FOR THE NEXT SECTION GROUP 
     foreach($arrTxtData as $line){ 
      if(!empty(trim($line))){ 
       $sections[$index][] = trim($line); 
      }else{ 
       $index++; 
      } 
     } 

     // EXTRACT THE VALUES FOR THE TABLE HEADINGS... 
     $extract = $sections[0]; 
     $heading1 = preg_replace("#(\t|\s)*?(\:.*)$#", "", $extract[0]); 
     $heading2 = preg_replace("#(\t|\s)*?(\:.*)$#", "", $extract[1]); 
     $heading3 = preg_replace("#(\t|\s)*?(\:.*)$#", "", $extract[2]); 

     // BUILD THE HEAD-SECTION OF YOUR TABLE... 
     $output  = "<table class=''>" . PHP_EOL; 
     $output .= "<tr class=''>" . PHP_EOL; 
     $output .= "<th class=''>{$heading1}</th>" . PHP_EOL; 
     $output .= "<th class=''>{$heading2}</th>" . PHP_EOL; 
     $output .= "<th class=''>{$heading3}</th>" . PHP_EOL; 
     $output .= "</tr>" . PHP_EOL; 
     $output .= "<tbody>" . PHP_EOL; 

     // LOOP THROUGH ALL THE SECTIONS AND BUILD YOUR ROWS + CELLS 
     foreach($sections as $section){ 
      $output.= "<tr>" . PHP_EOL; 
      foreach($section as $data){ 
       $strVal = preg_replace("#(^.*?\:\s*?)#", "", $data); 
       $output.= "<td class=''>{$strVal}</td>" . PHP_EOL; 
      } 
      $output.= "</tr>" . PHP_EOL; 
     } 
     // CLOSE OFF THE <TBODY> AND <TABLE> TAGS 
     $output .= "</tbody>" . PHP_EOL; 
     $output .= "</table>" . PHP_EOL; 

     // ECHO THE RESULTING OUTPUT [THE TABLE] 
     echo $output; 

ERGEBNIS DES ECHO STATEMENT:

 Name  State PathName 
     MyName1  Apt  C:\xx\MyName1.txt 
     MyName2  Apf  C:\xx\MyName2.txt 
     MyName3  Apf  C:\xx\MyName3.txt 
+0

gewählt nur wegen der Mühe –

+0

Ich auch, weil es OP ihr gewünschtes Ergebnis gibt, während die anderen Antworten nicht - nicht, dass SO ist ein Free-Code-Service, aber guter Aufwand ':)' –

0
// Read the contents of the file 
$file = file_get_contents("someFile.txt"); 

// convert the file contents to lines of text 
$lines = explode("\r\n", $ file); 

Jetzt Sie irgendwelche Datenzeilen in dem $ Linien Array zugreifen können.

0

Wenn Sie nicht wissen, wie man damit beginnen, Verwendung php explodiert die lange Kette mit allen Informationen in einzelnen Reihen zu teilen wie:

$array = explode (" : ", $string); 

Diese jede Zeile Zeichenfolge aufteilen würde um das : Zeichen, diese Weise können Sie wie ein Array haben so:

$array = [ 
    "Name", 
    "Mynam1", 
    "State", 
    "Apt", 
    "..." 
]; 

Dann könnten Sie eine for-Schleife eine Schleife durch jedes Element verwenden und speichern Sie es als ein Schlüssel-Wert-Paar, meanin g, jedes Mal, wenn ein Rray Item eine gerade Schlüsselzahl hat: 0,2,4, etc ... ist es der Name des gewünschten Schlüssels (NAME, STATE, ...) und du kannst es in das Ergebnis-Array einpassen zusammen mit seinem Wert, der der nächste Gegenstand sein wird (so $x + 1).

for($x = 0, $x < count($array); $x++) { 
    if ($x % 2 == 0) { 
     $result_array["$array[$x]_$x"] = $array[$x+1]; 
    } 
} 

Mit dieser Methode können Sie ein Array wie so erhalten wird:

$result = [ 
    "Name_1" => "Mynam1", 
    "State_1" => "Apt", 
    "..." 
]; 

nun auf von dort aus sollten Sie versuchen, und dass auf Ihre Bedürfnisse zu arbeiten, so dass Sie es bei Bedarf :)

verwenden können

Viel Glück!