正则表达式 - 去除字符串末尾的字符

3
我试图删除字符串末尾的破折号(dash)。以下是我的代码:
<?php

$str = 'SAVE $45! - Wed. Beach Co-ed 6s (Jul-Aug)';
echo ereg_replace('([^a-z0-9]+)','-',strtolower($str));
?>
输出结果为:
save-45-wed-beach-co-ed-6s-jul-aug-
如何仅在特定情况下删除特定的尾随字符,例如这里的破折号?
提前感谢。

你可能想要查看这个链接:https://dev59.com/bXI95IYBdhLWcg3w5SSh#2103815 - Alix Axel
可能是重复的问题:PHP 删除字符串末尾的句号。链接:https://dev59.com/LnI-5IYBdhLWcg3wBjdR - Alix Axel
3个回答

11

使用 rtrim 函数:

rtrim($str, "-")
如果你坚持使用正则表达式,可以这样做:
preg_replace('/-$/', '', $str)
< p > $字符匹配字符串结尾。


(The $ character matches the end of the subject.)

1

另一种解决方案。

<?php

$string = 'SAVE $45! - Wed. Beach Co-ed 6s (Jul-Aug)';
$search = array('/[^a-z0-9]+/', '/[^a-z0-9]$/');
$replace = array('-', '');
echo preg_replace($search, $replace, strtolower($string));

?>

输出。

save-45-wed-beach-co-ed-6s-jul-aug

0
你的正则表达式是错误的,因为它用破折号删除了每个非字母数字字符。
应该这样写:
echo ereg_replace('-$','',strtolower($str));

$代表字符串的结尾,第二个参数是替换内容。(至少我认为是这样,我不熟悉php的ereg_replace函数)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接