PHP Regex只允许a-z a-z 1-9,并用下划线替换空格


PHP Regex allow only a-z A-Z 1-9 and replace spaces with underscore

所以我需要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

您可以在两个替换中完成:

$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);