0

可能重复:
PHP 从字符串中删除特殊字符

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

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

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

这是因为我的 sms 网关机器存在一些问题,它无法传递带有这个字符°的消息,该字符在意大利语言中经常用于枚举数字。

我需要使用 PHP 来执行此操作,但只有正则表达式可以提供很大帮助。

4

1 回答 1

0
$newSMS = preg_replace('/[^)(\[\]#*^?!|"&%a-zA-Z0-9]/', '', $sms);

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

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

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

于 2012-10-10T00:22:09.507 回答