2014-01-22 113 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。然后切割并合并。

相关问题