php 正则过滤标点符号_PHP正则表达式删除多余的标点符号

所以基本上我们需要一个正则表达式来从字符串中去除多余的标点符号,只留下一个标点字符.

所以:

This is my awesome string!!!!! Don’t you love it???!!??!!

会导致

This is my awesome string! Don’t you love it?!

我已经尝试并试图得到这个,但我要么最终破坏字符串或它根本不起作用.我还在学习正则表达式,所以请原谅这肯定是一个愚蠢的问题.

我猜“标点符号”几乎就是A-Za-z0-9

编辑似乎我误解了我们的原始要求.使用下面接受的解决方案,我将如何调整它,以便无论你有什么字符,标点符号仅限于第一个?

IE

???!!!!!!

会变得公正

?

This is my string!!!?!?!?!? Isn’t it great???!?!?!!

会成为

This is my string! Isn’t it great?

解决方法:

与其他答案类似,但应该按照任何顺序处理任何非0-9a-zA-Z字符,留下每个左边的一个:

$newstring= preg_replace('/([^\w\s])(?=[^\w\s]*\1)/', '', $oldstring);

应该转

This is my awesome string!!!!! Don't you love it???!!??!!

This is my awesome string! Don't you love it?!

它的工作原理是使用正向前瞻来查看该字符串中是否再次出现该字符.如果是,则用空字符串替换.

标签:php,regex

来源: https://codeday.me/bug/20190529/1181817.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值