选择性减少弦

Jus*_*tin 1 php regex string str-replace

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

Viv*_*ath 7

使用preg_replace具有/[^a-zA-Z0-9_\-]/的图案及''作为替代.

$string = preg_replace('/[^a-zA-Z0-9_\-]/', '', $string);
Run Code Online (Sandbox Code Playgroud)

编辑

正如skippy所说,你可以使用i修饰符来区分大小写:

$string = preg_replace('/[^a-z0-9_\-]/i', '', $string);
Run Code Online (Sandbox Code Playgroud)


lon*_*day 5

用途preg_replace:

$str = preg_replace('/[^\w-]/', '', $str);
Run Code Online (Sandbox Code Playgroud)

第一个参数preg_replace是正则表达式.这个包含:

  • / - 开始分隔符 - 启动正则表达式
  • [ - 开始字符类 - 定义可匹配的字符
  • ^ - 否定 - 使字符类仅匹配与后面的选择不匹配的字符
  • \w - 单词字符 - 所以不要匹配单词字符.这些是A-Za-z0-9_(下划线)
  • - - 连字符 - 也不匹配大肆宣传
  • ] - 关闭角色类
  • / - 结束分隔符 - 关闭正则表达式

请注意,这仅匹配连字符(即 - ).它与真正的短划线字符( - 或 - )不匹配.