【发布时间】:2011-08-29 02:57:26
【问题描述】:
我不是正则表达式专家:( 我试图从字符串中删除除字母数字和下划线和破折号之外的所有字符。 这是正确的语法吗?:
preg_replace("/[^a-z0-9_-]+/i", "", $string);
【问题讨论】:
-
测试需要2s就能知道结果。
我不是正则表达式专家:( 我试图从字符串中删除除字母数字和下划线和破折号之外的所有字符。 这是正确的语法吗?:
preg_replace("/[^a-z0-9_-]+/i", "", $string);
【问题讨论】:
可以,但可以稍微优化一下:
preg_replace('/[^\w-]/', '', $string);
\w 匹配字母数字字符和下划线。如果您的语言环境允许,这具有允许重音字符的额外优势。
【讨论】:
.],这个正则表达式匹配.,用一个空白字符串替换它,然后匹配]并且做同样的事情。
是的。 :)
【讨论】:
你所拥有的看起来会起作用。您可能需要添加空格,因为它们不是字母数字字符:
preg_replace("/[^a-z0-9_-\s]+/i", "", $string);
【讨论】:
/i 表示已经不区分大小写,无需加大写。