2014-01-22 110 views
0

我需要使得像str_replace()但只有一個字符,並且必須是字符串的最後一個字符。如何替換隻有一個字符,並且最後一個字符串

舉例來說,如果我有:

$var = "one,two,three,four,finish"; 

我需要退貨:

"one,two,three,fourfinish"; 

我需要替換的字符串的最後,

我知道這可能很容易,但我沒有找到任何明確的網絡!

+1

你沒有替換 - 你正在刪除它。這是你真正想要的嗎? – h2ooooooo

+0

我想刪除它,我的意思是替換「,」爲「」 – ManelPNavarro

+0

我已經解決了它。謝謝! – ManelPNavarro

回答

3

您可以使用strrpos找到一個字符串的字符串最後一次出現,然後用substr

<?php 
    $var = "one,two,three,four,finish"; 

    if ($lastPosition = strrpos($var, ',')) { 
     $var = substr($var, 0, $lastPosition) . substr($var, $lastPosition + 1); 
    } 

    var_dump($var); //string(24) "one,two,three,fourfinish" 
?> 

DEMO


如果你想取代它,你只需要在你的條件下連接替換字符串:

<?php 
    $var = "one,two,three,four,finish"; 
    $replace = "-"; 

    if ($lastPosition = strrpos($var, ',')) { 
     $var = substr($var, 0, $lastPosition) . $replace . substr($var, $lastPosition + 1); 
    } 

    var_dump($var); //string(24) "one,two,three,four-finish" 
?> 
+0

它工作。非常感謝你! – ManelPNavarro

0

如果是$ var的最後一句話總是 「完成」,你可以這樣做:

$var = "one,two,three,four,finish"; 
$goodVar = str_replace(',finish', 'finish', $var); 
print $goodVar; 
+0

問題是我想刪除',',我不能用任何詞語來替換它。 – ManelPNavarro

0

試試這個。

$string = 'one,two,three,four,finish'; 
$find = ','; 
$replace = ''; 
$result = preg_replace(strrev("/$find/"),strrev($replace),strrev($string),1); 
echo strrev($result); 
0
$var = "one,two,three,four,finish"; 

$var = preg_replace("/,([^,]*)$/", "\\1", $var); 

// $var: "one,two,three,fourfinish" 
3

使用strrpos()查找字符串中的最後一個逗號的位置,並刪除它使用substr_replace()

echo substr_replace($var, '', strrpos($var, ','), 1); 

Demo

+0

雖然字符*必須*存在,否則它會刪除第一個字符:https://eval.in/93414 – h2ooooooo

+0

@ h2ooooooo:對 - 確保字符確實是您想要刪除的字符是個好主意正如你在答案中所做的那樣):) –

0

您可以使用strchr找到的最後一個實例給定字符串中的字符

嘗試

$var = "one,two,three,four,finish"; 
$len = strlen($var)-strlen(substr(strrchr($var,","),1)); 
echo substr($var,0,$len-1).substr(strrchr($var,","),1); 

演示here

0

你能找到最後抵消炭 「」 與strrpos。然後切割併合並。

相關問題