2017-04-08 2 views
1

Ich möchte das letzte Zeichen aus einem Wort entfernen. Ich habe eine Datei mit den Worten:Wie entfernt man das letzte Zeichen aus jeder Zeile mit PHP?

hello. 
world 
welcome. 
home.. 
how. 
are. 
you 
any 
thing. 
else. 

Ich versuche, die . vom Ende jeder Zeile zu entfernen. Aus irgendeinem Grund entfernt mein Code den Punkt nur aus der letzten Welt else aber lässt den Rest wie es ist.

Hier ist mein Code:

$words = file('words.txt'); 

foreach($words as $word) 
{ 
    echo substr($word, 0, -1); 
    echo "<br />"; 
} 

Hat jemand wissen, wie ich dieses Problem beheben kann?

Antwort

1

Das liegt daran, dass das letzte Symbol in jeder Zeile ein Zeilenumbruch ist. Haben trim, bevor Sie substr:

$words = file('words.txt'); 

foreach($words as $word) 
{ 
    echo substr(trim($word), 0, -1); // here we go 
    echo "<br />"; 
} 

Oder fügen second argument-file Aufruf:

$words = file('words.txt', FILE_IGNORE_NEW_LINES); 

foreach($words as $word) 
{ 
    echo substr($word, 0, -1); 
    echo "<br />"; 
} 
+0

hallo u_mulder, Danke für die Antwort. Ich habe deinen ersten Code ausprobiert und es hat funktioniert, aber auch das letzte Zeichen entfernt, das kein Punkt ist. ich habe geändert: echo substr (trim ($ word), 0, -1) zu echo rtrim (trim ($ word), "."); und jetzt funktioniert es perfekt. Danke – Gagarin

+0

Mit 'rtrim' ist auch eine gute Idee. Froh, dass ich Helfen kann. –

+0

habe den zweiten Weg versucht - funktioniert auch super mit rtrim statt substr. Danke noch einmal! – Gagarin

2

Sie rtrim

rtrim verwenden - Leerzeichen entfernen (oder andere Zeichen) vom Ende eine Zeichenkette

$words = file('words.txt', FILE_IGNORE_NEW_LINES); 

foreach($words as $word) 
{ 
    echo rtrim($word, '.'); 
    echo "<br />"; 
} 
0

Einzeiliger Lösung mit file_get_contents und preg_replace Funktionen:

$new_contents = preg_replace("/(\w+)\.*([\r\n]|$)/", "$1</br>", file_get_contents("words.txt")); 
echo $new_contents; 

Der Ausgang:

hello 

world 

welcome 

home 

how 

are 

you 

any 

thing 

else 
+0

Vielen Dank. Funktioniert sehr gut. – Gagarin

Verwandte Themen