2015-11-08 15 views
0

其實我想從By刪除所有內容,我的回答應該是在3月6日發佈。我正在使用下面的代碼。這是工作。但是如果在給定的字符串中沒有By,那麼問題有時會出現,那麼echo值根本沒有顯示。php如何刪除字符串後的任何內容如果只有

$s = 'Posted On March 6th By Cristiano'; 

$variable = substr($s, 0, strpos($s, "By")); 
echo $variable; 

$variable = strstr($s, 'By', true); 
echo $variable; 

回答

0

這裏有三種方法你可以用。

$s = 'Posted On March 6th By Cristiano'; 
$approach1 = explode(' By', $s); 
echo $approach1[0]; 

或正則表達式:

echo preg_replace('/ By.*/', '', $s); 

你也preg_match使用。

preg_match('/(.*) By/', $s, $matches); 
echo $matches[1]; 

甚至preg_split(看不到的優勢在這種情況下,雖然爆炸..)。

$four = preg_split('/ By/', $s); 
echo $four[0]; 
+0

正則表達式對於這樣簡單的事情來說是過度的,即使是preg_match手冊頁建議在這種情況下使用strpos – rjdown

+0

先生,它正在工作,但最後它顯示了n –

+0

哦脫掉用於測試的'\ n' ..雖然如果在雙引號應該給一個換行符。 – chris85

0

而不是使用SUBSTR內strpos的,只是把它分配給一個獨立的變量,並檢查它的值:

<?php 
$s = 'Posted On March 6th By Cristiano'; 
$by_start = strpos($s, "By"); 
$variable = $by_start === false ? $s : substr($s, 0, $by_start); 
echo $variable; 
+0

謝謝你的答案先生,我會嘗試。 –

相關問題