带有+括号的PHP正则表达式字符串+所有非字母数字字符,有一些例外为#和(?!\ ^)[复制]

问题描述 投票:0回答:1

可能重复: PHP remove special character from string

我想以这种方式找到一个正则表达式:

我在$ sms变量中有一条SMS消息的正文。我将得到一个字符串:

- parenthesis
- the non alphanumeric character )([]#@*^?!|"&% and remove the other that remain
- all alphanumeric character and numeric

这是因为我的短信网关机器有一些问题,它没有提供带有此字符的消息,经常在意大利语中用来枚举数字。

我需要使用PHP来做到这一点,但只有正则表达式才能提供很好的帮助。

php regex sms-gateway
1个回答
0
投票
$newSMS = preg_replace('/[^)(\[\]#*^?!|"&%a-zA-Z0-9]/', '', $sms);

正则表达式匹配任何一个字符([...]),它不是(^)在你描述的字符()(\[\]#*^?!|"&%a-zA-Z0-9)中,并用空字符串''替换它们,这与删除它们基本相同。这个正则表达式可以缩短为:

/[^)(\[\]#*^?!|"&%a-z\d]/i

通过使用\d代表0-9和不区分大小写的模式(i),这样我们就不必重复这些字母,但节省的费用很少,特别是因为PHP的数字无论如何都是ASCII。

© www.soinside.com 2019 - 2024. All rights reserved.