PHP正则表达式仅允许a-z A-Z 1-9并用下划线替换空格

时间:2015-12-19 05:19:55

标签: php regex

所以我需要preg_replace()

  • 删除所有字符,但a-z A-Z 1-9
  • 用单个下划线\s+
  • 替换空格
  • 如果字符串中有多个下划线,则需要替换它 单一[_]+

代码

$str = "Hz!!    zÒ142______23 4";
$str = preg_replace('/[^a-zA-Z0-9][_]+\s+/', '_', $str);
echo $str; //Outputs: Hz_z142_23_4

编辑我想用单个preg_replace

来做

1 个答案:

答案 0 :(得分:1)

你可以用两个替代品来做:

$str = preg_replace('/[^\w\s]+/', '', $str);
$str = preg_replace('/[^a-zA-Z0-9]+/', '_', $str);

或者,与评论一样,您可以将它们合并为一个:

preg_replace(array('/[^\w\s]+/', '/[^a-zA-Z0-9]+/'), array('', '_'), $str);