我有一组数组字符串..它们在最后一个地方以及它们之间包含特殊字符。我想从最后一个地方删除特殊字符。
preg_replace('/[^A-Za-z0-9\-\']/', '', $string);
我知道我可以使用replace函数删除所有特殊字符,但我不想删除字符串之间的特殊字符。我只想从上一个位置删除特殊字符。抱歉我的英语不好..
hope,
all"
inthe.
world"
to-the.
world"
some-thing"
答案 0 :(得分:2)
如果您想要删除的特殊字符是事先已知的,则可以使用rtrim()
:
$string = rtrim($string, ',".');
第二个参数描述了应删除的字符列表。
如果不知道特殊字符,那么您可以使用正则表达式解决方案。以下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);
$
匹配行的结尾,因此只有当前一个匹配是最后一个字符时,正则表达式才会匹配。