选择性减少弦

时间:2011-05-17 22:22:36

标签: php regex string str-replace

我想知道如何从字符串中删除所有非字母数字字符,除了PHP中的下划线和短划线。

3 个答案:

答案 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);