2017-02-15 4 views
0

Ich bin ziemlich neu in PHP und ich habe ein einfaches Skript erstellt, das Daten aus einer Textdatei sammelt und in einer Tabelle ausgibt.Drucklänge des Wortes aus Textdatei

Die Daten in der Textdatei sieht wie folgt aus:

0086.se 2017-04-02 
0102design.se 2017-03-03 
0141.se 2017-04-21 
0158.se 2017-03-27 

Die Ausgabe sieht wie folgt aus:

<table> 
<tr><th>Name</td><th>Date</td></tr> 
<tr><td>0086.se</td><td>2017-04-02</td></tr> 
<tr><td>0102design.se</td><td>2017-03-03</td></tr> 
<tr><td>0141.se</td><td>2017-04-21</td></tr> 
<tr><td>0158.se</td><td>2017-03-27</td></tr> 
</table> 

Dies ist mein Code:

<table> 
    <tr> 
     <th>Name</td> 
     <th>Date</td> 
    </tr> 
<?php 
$file_handle = fopen("domaner.txt", "rb"); 

while (!feof($file_handle)) { 
    $line_of_text = fgets($file_handle); 
    $parts = explode(' ', $line_of_text); 
    echo "<tr><td>$parts[0]</td><td>$parts[1]</td></tr>"; 
} 
fclose($file_handle); 
?> 
</table> 

Was ich will tu ist, ein weiteres TD nach der Datumsspalte hinzuzufügen, das die Länge des Wortes in der Spalte Name ausgibt, aber ".se" nicht mitzählt. Zum Beispiel 0086.se würde die Länge 4. Wie dies geben:

<tr><td>0086.se</td><td>2017-04-02</td><td>THE LENGHT OF 0086 HERE</td></tr> 

Ich hoffe, jemand zu verstehen, was ich versuche, hier zu erreichen :)

Antwort

1

Folgende Arbeiten sollten:

<table> 
    <tr> 
     <th>Name</th> 
     <th>Date</th> 
     <th>Lenght</th> 
    </tr> 
<?php 
$file_handle = fopen("domaner.txt", "rb"); 

while (!feof($file_handle)) { 
    $line_of_text = fgets($file_handle); 
    $parts = explode(' ', $line_of_text); 
    $tmp = explode('.', $parts[0]); 
    echo "<tr><td>".$parts[0]."</td><td>".$parts[1]."</td><td>".strlen($tmp[0])."</td></tr>"; 
} 
fclose($file_handle); 
?> 
</table> 
+0

Danke, aber es gibt mir den Wert 0 auf allen Tabellenzeilen. – AndreasC

+0

Die erste explodiert als ein Doppelraum statt einer, ich werde es korrigieren. –

+0

Ich habe es zur Arbeit, ausgezeichnet! Vielen Dank. – AndreasC

0

Dies sollten Sie die Anzahl geben, die Sie suchen !

echo strlen ($ Teile);

+0

Dank für Ihre Antwort danken. Kannst du mir bitte sagen, wie ich es in den Code aufnehmen kann? Ich kann es nicht zur Arbeit bringen, fürchte ich. – AndreasC

+0

@ Laurent-ub gab Ihnen eine absolut wunderbare Implementierung, einschließlich genau, wie Sie es in Ihren Code aufnehmen. Ich würde seiner Antwort folgen - es ist besser als mein erster Gedanke. – 0708

+0

Ja, ich benutze es, danke :) – AndreasC

0

Ändern Sie bitte Ihre Echo auf diese eine

echo "<tr><td>$parts[0]</td><td>$parts[1]</td><td>iconv_strlen($parts[0])-3</td></tr>"; 
Verwandte Themen