【问题标题】:How to replace only one character, and the last of the string如何仅替换一个字符和字符串的最后一个字符
【发布时间】:2014-02-12 18:42:10
【问题描述】:

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

例如,如果我有:

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

我需要退货:

"one,two,three,fourfinish";

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

我知道这可能很容易,但我在网上没有找到任何明确的信息!

【问题讨论】:

  • 你没有替换 - 你正在删除它。那是你真正想要的吗?
  • 我想删除它,我的意思是替换“,”为“”
  • 我已经解决了。谢谢!

标签: php string replace str-replace


【解决方案1】:

您可以使用 strrpos 找到 char "," 的最后偏移量。然后剪切合并。

【讨论】:

    【解决方案2】:

    您可以使用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

    【讨论】:

      【解决方案3】:

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

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

      Demo

      【讨论】:

      • 字符 必须 存在,否则它会删除第一个字符:eval.in/93414
      • @h2ooooooo:对 - 确保角色确实是您想要删除的角色是个好主意(就像您在回答中所做的那样):)
      【解决方案4】:
      $var = "one,two,three,four,finish";
      
      $var = preg_replace("/,([^,]*)$/", "\\1", $var);
      
      // $var: "one,two,three,fourfinish"
      

      【讨论】:

        【解决方案5】:

        可以使用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"
        ?>
        

        【讨论】:

          【解决方案6】:

          试试这个。

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

          【讨论】:

            【解决方案7】:

            如果 $var 的最后一个词总是“finish”,你可以这样写:

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

            【讨论】:

            • 问题是我想把','去掉,不能换成任何字。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-05-13
            • 1970-01-01
            • 1970-01-01
            • 2016-01-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多