2017-05-05 101 views
-1

我有幾個字符串,其中單詞用冒號分隔。我需要刪除最後一個冒號和最後一個冒號後的所有內容。我發現只有解決方案,其中以另一種方式工作,刪除所有內容並保留最後的冒號和最後的單詞。就像這樣:PHP刪除所有字符串的最後冒號

$link = trim(substr($link, strrpos($link, ':') + 1)); 

字符串看起來是這樣的:

Dashboard:Default:default 
Construction:List:workflow 
Construction:List:default 
+0

你想從字符串輸出什麼? –

+0

@dhruvjadia我只需要 '儀表板:默認 構造:列表 構造:列表' – HS1993

+2

什麼問題var_dump(substr($ link,0,strrpos($ link,':')));'? [PHP文檔參考](http://www.php.net/manual/en/function.strrpos.php) –

回答

1

@ HS1993也可以通過SUBSTR()和strrpos,SUBSTR(實現它)將提取的字符串和strrpos(所需的部分),會發現最後出現的 「:」 這樣的:

<?php 
    $str = 'Dashboard:Default:default'; 
    echo substr($str, 0, strrpos($str,":")); 

輸出:控制板:默認

0

我希望這會幫助你,這裏我們使用explodeunsetimplode

Try this code snippet here

解決方案1:

<?php 
ini_set('display_errors', 1); 
$string='Dashboard:Default:default'; 
$result=explode(":", $string); 
unset($result[count($result)-1]); 
echo $result=implode(":",$result); 

解決方案2:

<?php 
ini_set('display_errors', 1); 
$string='Dashboard:Default:default'; 
echo substr_replace($string,"",strrpos($string, ':')); 

輸出: Dashboard:Default

+0

@ HS1993希望我的貼子能幫到你.. –

2

您可以使用此正則表達式匹配的最後一個冒號後的所有文本(包括最後一個冒號):

/:(\w)*$/ 
  • :查找一個冒號(:)
  • (\w)*與任何數目的字符的文本相匹配
  • $表示字符串的結束

演示:https://regex101.com/r/7eX8SS/2/

PHP:

$link = 'Construction:List:default'; 
$pattern = '/:(\w)*$/'; 
echo preg_replace($pattern, '', $link); 
// Output: Construction:List 

演示:https://ideone.com/UhRcaB

+0

謝謝你,男;;) – Nofuzy

1
$str = preg_replace("/:([^:]*)$/m", "", $str); 
0

這裏是一個示例代碼。也許它會幫助你。

<?php 
$string = 'Dashboard:Default:default'; 
$strParts = explode(':', $string); 

array_pop($strParts); 

echo implode(':',$strParts); 
-1

試試這個

$link = 'Dashboard:Default:default'; 
$link = substr($link, 0, strrpos($link, ':')); 

echo $link; 
相關問題