如何删除PHP字符串末尾的所有特定字符?


86

仅在句点结束时如何删除最后一个字符?

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

Answers:



29

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

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

3
我猜OP希望删除所有的“。” 最后,否则为什么只删除一个?;)
Tor Valamo 2010年

2
是的,我也在猜。尽可能紧跟在问题之后。
ghostdog74 2010年

2
这样好得多,太多人没有意识到使用character_maskintrim基本上会删除整个字符串中的字符的任何实例
Brock Hensley 2014年

8

要仅在有句号且不求助的情况下删除最后一个字符,preg_replace我们可以将字符串视为char数组,如果最后一个字符是点,则可以将其删除。

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

2
这是正确的答案,因为其他字符会删除所有结尾字符,而不仅仅是最后一个字符。但是您应该使用===而不是==也检查类型是否相等
padawanTony16年

3

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

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

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

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

要从字符串的末尾删除特殊字符或在字符串的末尾删除动态特殊字符,我们可以通过regex执行。

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";

希望对您有帮助。

谢谢 :-)


2

我知道这个问题有几岁了,但我的答案可能对某人有帮助。

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

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

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

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

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

preg_replace将删除可用于删除末尾的点

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

希望对您有帮助。


2

可以用不同的方式删除最后一个字符,这是一些

  • 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);

0

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

$string = "something here.";

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

var_dump($output);

// $output = 'something here';

0

您可以使用php的rtrim函数,该函数允许您修剪存在于最后位置的数据。

例如 :

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

最简单和禁食的方式!


-1

例:

    $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)
Nebulosar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.