【问题标题】:How do I remove all specific characters at the end of a string in PHP?如何在 PHP 中删除字符串末尾的所有特定字符?
【发布时间】:2011-01-04 11:02:21
【问题描述】:

如果最后一个字符是句点,我如何删除它?

$string = "something here.";
$output = 'something here';

【问题讨论】:

    标签: php regex string


    【解决方案1】:
    $output = rtrim($string, '.');
    

    (参考:rtrim on PHP.net

    【讨论】:

    • 可能不需要删除...(省略号):
    • @OndrejIvanic:你有。如果你去掉最后一个点,而剩下的仍然是一个点,那么问题标题就没有多大意义了,不是吗?
    【解决方案2】:

    使用 rtrim 替换所有“.”最后,不仅仅是最后一个字符

    $string = "something here..";
    echo preg_replace("/\.$/","",$string);
    

    【讨论】:

    • 我猜 OP 想要删除所有 '.'最后,否则为什么只删除一个? ;)
    • 是的,我也猜到了。尽可能接近问题。
    • 这样好多了,太多人没有意识到在trim 中使用character_mask 基本上会删除整个字符串中的任何字符实例
    【解决方案3】:

    仅当它是句点时才删除最后一个字符而不诉诸preg_replace,我们可以将字符串视为一个字符数组,如果它是一个点,则删除最后一个字符。

    if ($str[strlen($str)-1]==='.')
      $str=substr($str, 0, -1);
    

    【讨论】:

    • 这是正确的答案,因为其他的会删除所有尾随字符,而不仅仅是最后一个。但是你应该使用=== 而不是== 来检查类型是否相等
    【解决方案4】:

    我知道问题已经解决了。但也许这个答案会对某人有所帮助。

    rtrim() - 从字符串末尾去除空格(或其他字符)

    ltrim() - 从字符串的开头去除空格(或其他字符)

    trim() - 从字符串的开头和结尾去除空格(或其他字符)

    对于去除字符串末尾的特殊字符或者字符串末尾是否包含动态特殊字符,我们可以通过正则表达式来完成。

    preg_replace - 执行正则表达式搜索和替换

    $regex = "/\.$/";             //to replace the single dot at the end
    $regex = "/\.+$/";            //to replace multiple dots at the end
    $regex = "/[.*?!@#$&-_ ]+$/"; //to replace all special characters (.*?!@#$&-_) from the end
    
    $result = preg_replace($regex, "", $string);
    

    这里有一些例子来理解 $regex = "/[.*?!@#$&-_ ]+$/"; 何时应用于字符串

    $string = "Some text........"; // $resul -> "Some text";
    $string = "Some text.????";    // $resul -> "Some text";
    $string = "Some text!!!";      // $resul -> "Some text";
    $string = "Some text..!???";   // $resul -> "Some text";
    

    希望对你有帮助。

    谢谢:-)

    【讨论】:

    • 我看到一个连字符在字符类中创建了一系列字符。 &-_
    【解决方案5】:

    我知道这个问题有些陈旧,但我的回答可能对某人有帮助。

    $string = "something here..........";

    ltrim 将删除前导点。例如:- ltrim($string, ".")

    rtrim rtrim($string, ".") 将删除尾随点。

    trim trim($string, ".") 将删除尾随和前导点。

    你也可以通过正则表达式来做到这一点

    preg_replace will remove 可用于删除末尾的点/点

    $regex = "/\.$/"; //to replace single dot at the end
    $regex = "/\.+$/"; //to replace multiple dots at the end
    preg_replace($regex, "", $string);
    

    希望对你有帮助。

    【讨论】:

      【解决方案6】:

      最后一个字符可以通过不同的方式删除,这里有一些

      • rtrim()
      $output = rtrim($string, '.');
      
      • Regular Expression
      preg_replace("/\.$/", "", $string);
      
      • substr() / mb_substr()
      echo mb_substr($string, 0, -1);
      
      echo substr(trim($string), 0, -1);
      
      • substr()trim()
      echo substr(trim($string), 0, -1);
      

      【讨论】:

        【解决方案7】:

        您可以使用 php 的 rtrim 功能,它可以让您修剪存在于最后位置的数据。

        例如:

        $trim_variable= rtrim($any_string, '.');
        

        最简单快速的方法!!

        【讨论】:

          【解决方案8】:

          使用strrpossubstr 的组合来获取最后一个句点字符的位置并将其删除,保留所有其他字符不变:

          $string = "something here.";
          
          $pos = strrpos($string,'.');
          if($pos !== false){
            $output = substr($string,0,$pos);
          } else {
            $output = $string;
          }
          
          var_dump($output);
          
          // $output = 'something here';
          

          【讨论】:

            【解决方案9】:

            示例:

                $columns = array('col1'=> 'value1', 'col2' => '2', 'col3' => '3', 'col4' => 'value4');
            
                echo "Total no of elements: ".count($columns);
                echo "<br>";
                echo "----------------------------------------------<br />";
            
                $keys = "";
                $values = "";
                foreach($columns as $x=>$x_value)
                {
                  echo "Key=" . $x . ", Value=" . $x_value;
                  $keys = $keys."'".$x."',";
                  $values = $values."'".$x_value."',";
                  echo "<br>";
                }
            
            
                echo "----------------------Before------------------------<br />";
            
                echo $keys;
                echo "<br />";
                echo $values;
                echo "<br />";
            
                $keys   = rtrim($keys, ",");
                $values = rtrim($values, ",");
                echo "<br />";
            
                echo "-----------------------After-----------------------<br />";
                echo $keys;
                echo "<br />";
                echo $values;
            
            ?>
            

            输出:

            Total no of elements: 4
            ----------------------------------------------
            Key=col1, Value=value1
            Key=col2, Value=2
            Key=col3, Value=3
            Key=col4, Value=value4
            ----------------------Before------------------------
            'col1','col2','col3','col4',
            'value1','2','3','value4',
            
            -----------------------After-----------------------
            'col1','col2','col3','col4'
            'value1','2','3','value4'
            

            【讨论】:

            • 为此你可以使用 join(", ", $array)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-01-11
            • 2011-06-22
            • 2020-01-01
            • 1970-01-01
            • 2019-09-05
            • 1970-01-01
            • 2017-01-27
            相关资源
            最近更新 更多