2015-04-03 151 views
2

如何使用PHP從字符串中刪除最後一個單詞?例如,"Hi, I'm Gian Marco"將變成"Hi, I'm Gian"PHP:如何從字符串中刪除最後一個單詞?

+0

的可能重複的代碼[刪除從字符串中最後兩個單詞(http://stackoverflow.com/questions/10541808/remove-last-two-words-from-a-string) – 2015-04-03 08:02:39

+0

我不知道絃樂的內容!我只想刪除最後一個字(不是最後一個字符)。 – Kiuki 2015-04-03 08:15:35

+0

@MamounBenghezal這是一個java問題的重複? – Loko 2015-04-03 08:31:15

回答

17

嘗試這樣的:

$txt = "Hi, I'm Gian Marco"; 
$str= preg_replace('/\W\w+\s*(\W*)$/', '$1', $txt); 
echo $str 

出把

Hi, I'm Gian 
+1

好(Ty)!!!如果字符串以數字結尾,例如「[email protected] 29348 39388」,我想刪除「39388」? (我不知道數字) – Kiuki 2015-04-03 08:31:06

+1

@Kiuki接受答案,如果它爲你工作。 – Loko 2015-04-03 08:39:16

+0

@Kiuki試試這個:$ str = preg_replace('〜\\ s + \\ S + $〜',「」,$ txt); – 2015-04-03 08:40:16

4

檢查這個

<?php 
$str ='"Hi, I\'m Gian Marco" will be "Hi, I\'m Gian"'; 
$words = explode(" ", $str); 
array_splice($words, -1); 

echo implode(" ", $words); 
?> 

來源:Remove last two words from a string

+0

Upvoting這個,因爲它回答OP的問題,而不使用正則表達式。 – nockieboy 2017-01-18 11:01:30

0

此代碼可以幫助你:

$str="Hi, I'm Gian Marco"; 

$split=explode("",$str); 
$split_rem=array_pop($split); 
foreach ($split as $k=>$v) 
{ 
    echo $v.''; 
} 
2

如果您不知道最後一個字,並且字符串長度很短,那麼當前的解決方案是可以的。

萬一你循環一個Concat的字符串,像這樣的查詢時知道它,比如:

 foreach ($this->id as $key => $id) { 
      $sql.=' id =' . $id . ' OR '; 
     } 

更好的解決方案:

 $sql_chain = chop($sql_chain," OR "); 

注意的preg_replace用正則表達式是非常慢長字符串。 在這種情況下,印章速度快100倍,性能增加可能相當大。

2

你可以用正則表達式來做到這一點。 (請參閱Ahmed Ziani的回答

但是在PHP中,您也可以使用一些內置函數來執行此操作。見下文

$text = "Hi, I'm Gian Marco"; 
$last_space_position = strrpos($text, ' '); 
$text = substr($text, 0, $last_space_position); 
echo $text; 
相關問題