2017-04-08 102 views
1

我想從單詞中刪除最後一個字符。 我有一個詞的文件:如何從每行字符串中刪除最後一個字符使用PHP?

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

我試圖從每行的末尾刪除.。 出於某種原因,我的代碼只從最後一個世界刪除點else,但保持原樣。

這裏是我的代碼:

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

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

是否有任何人知道我該如何解決這一問題?

回答

1

這是因爲每行中的最後一個符號是換行符。做substr之前不要trim

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

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

或者添加second argumentfile電話:

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

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

你好u_mulder,感謝您的回答。我試了你的第一個代碼,它的工作,但也刪除了最後一個不是點的字符。我改變了:echo substr(trim($ word),0,-1)to echo rtrim(trim($ word),「。」);現在它完美地工作。謝謝 – Gagarin

+0

使用'rtrim'也是一個好主意。樂意效勞。 –

+0

已經嘗試了第二種方式 - 也適用於rtrim而不是substr。再次感謝! – Gagarin

2

可以使用rtrim

RTRIM - 地帶的空白(或其它字符)的結束一串

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

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

單行使用file_get_contentspreg_replace功能溶液:

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

輸出:

hello 

world 

welcome 

home 

how 

are 

you 

any 

thing 

else 
+0

謝謝。工作得很好。 – Gagarin

相關問題