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

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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】:

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

$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)

以上是关于如何在 PHP 中删除字符串末尾的所有特定字符?的主要内容,如果未能解决你的问题,请参考以下文章

Php - 如何在 QueryPath 中删除/删除带有特定字符串的标签?

从字符串中间删除特定文本(仅从字符串末尾第一次出现)

如何删除包含某个子字符串的所有 PHP 数组元素?

如何删除Java中特定字符之前的所有字符?

从Excel单元格末尾删除特定字符

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]