我想知道如何从字符串中删除所有非字母数字字符,除了PHP中的下划线和短划线。
答案 0 :(得分:7)
使用preg_replace
作为模式,/[^a-zA-Z0-9_\-]/
作为替代。
''
修改强>
正如skippy所说,你可以使用$string = preg_replace('/[^a-zA-Z0-9_\-]/', '', $string);
修饰符来区分大小写:
i
答案 1 :(得分:5)
使用preg_replace
:
$str = preg_replace('/[^\w-]/', '', $str);
preg_replace
的第一个参数是正则表达式。这个包含:
/
- 开始分隔符 - 启动正则表达式[
- 开始字符类 - 定义可匹配的字符^
- 否定 - 使字符类仅匹配与后面的选择不匹配的字符\w
- 单词字符 - 所以不要匹配单词字符。这些是A-Za-z0-9
和_
(下划线)-
- 连字符 - 不匹配超标]
- 关闭角色类/
- 结束分隔符 - 关闭正则表达式请注意,这仅匹配连字符(即 - )。它与真正的短划线字符( - 或 - )不匹配。
答案 2 :(得分:1)
接受a-z,A-Z,0-9,' - ','_'和空格:
$str = preg_replace("/[^a-z0-9\s_-]+/i", '', $tr);
没有空格:
$str = preg_replace("/[^a-z0-9_-]+/i", '', $tr);