Php从字符串的最后一个字符中删除特殊字符

时间:2014-02-02 12:52:04

标签: php string replace

我有一组数组字符串..它们在最后一个地方以及它们之间包含特殊字符。我想从最后一个地方删除特殊字符。

preg_replace('/[^A-Za-z0-9\-\']/', '', $string);  

我知道我可以使用replace函数删除所有特殊字符,但我不想删除字符串之间的特殊字符。我只想从上一个位置删除特殊字符。抱歉我的英语不好..

hope,
 all" 
inthe. 
world" 
to-the. 
world" 
some-thing"

2 个答案:

答案 0 :(得分:2)

如果您想要删除的特殊字符是事先已知的,则可以使用rtrim()

$string = rtrim($string, ',".');

第二个参数描述了应删除的字符列表。

Demo


如果不知道特殊字符,那么您可以使用正则表达式解决方案。以下preg_replace()语句将删除任何不是单词字符([a-zA-Z0-9_]或连字符(-)或单引号(')的字符:

preg_replace('/[^\w\-\']$/', '', $str);  

<强>解释

  • [^\w-\'] - 匹配列表中的单个字符
    • \w - 任何单词[a-zA-Z0-9_]
    • \- - 文字-
    • \' - 文字'
  • $ - “行尾”锚 - 用于断言字符串末尾的位置

答案 1 :(得分:1)

这应该有用(注意在正则表达式中添加$):

preg_replace('/[^A-Za-z0-9\-\']$/', '', $string);  

$匹配行的结尾,因此只有当前一个匹配是最后一个字符时,正则表达式才会匹配。