如何只替换一个字符,以及最后一个字符串

时间:2014-01-22 15:46:15

标签: php string replace str-replace

我需要像str_replace()一样但只有一个字符,并且必须是字符串的最后一个字符。

例如,如果我有:

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

我需要退回:

"one,two,three,fourfinish";

我需要替换字符串的最后一个,

我知道这可能很容易但我在网上找不到任何清楚的东西!

7 个答案:

答案 0 :(得分: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"
?>

答案 1 :(得分:3)

使用strrpos()在字符串中查找最后一个逗号的位置,然后使用substr_replace()将其删除:

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

Demo

答案 2 :(得分:0)

如果$ var的最后一个字总是&#34;完成&#34;,你可以使用它:

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

答案 3 :(得分:0)

试试这个。

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

答案 4 :(得分:0)

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

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

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

答案 5 :(得分: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

答案 6 :(得分:0)

您可以使用strrpos找到char“,”的最后一个偏移量。然后切割并合并。