如何去除除字母数字、下划线和破折号之外的所有字符


how to strip all characters except for alphanumeric and underscore and dash?

我不是正则表达式专家:(我正在尝试从字符串中删除除 alpanumeric 和下划线和破折号之外的所有字符。这是正确的语法吗?

preg_replace("/[^a-z0-9_-]+/i", "", $string);

是的,但可以稍微优化一下:

preg_replace('/[^'w-]/', '', $string);

'w匹配字母数字字符和下划线。 这具有额外的优势,即在区域设置允许的情况下允许重音字符。

你所拥有的看起来会起作用。 您可能需要添加空格,因为它们不是字母数字字符:

preg_replace("/[^a-z0-9_-'s]+/i", "", $string);

是的。 :)

http://codepad.org/lkJTRP0P