PHP Regex 仅允许 a-z A-Z 1-9 并用下划线替换空格
Posted
技术标签:
【中文标题】PHP Regex 仅允许 a-z A-Z 1-9 并用下划线替换空格【英文标题】:PHP Regex allow only a-z A-Z 1-9 and replace spaces with underscore 【发布时间】:2016-03-25 20:47:52 【问题描述】:所以我需要preg_replace()
\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 来做
【问题讨论】:
你的预期输出是什么? 我需要Hz_z142_23_4
preg_replace('/[^\w]+|[_]+/','_',$str)
怎么样
@bansi 这也将用_
替换Ò
,这是OP 不想要的。
How to remove non-alphanumeric characters?的可能重复
【参考方案1】:
你可以用两个替换来做到这一点:
$str = preg_replace('/[^\w\s]+/', '', $str);
$str = preg_replace('/[^a-zA-Z0-9]+/', '_', $str);
或者,就像在 cmets 中一样,您可以将它们组合成一个:
preg_replace(array('/[^\w\s]+/', '/[^a-zA-Z0-9]+/'), array('', '_'), $str);
【讨论】:
preg_replace(array('/[^\w\s]+/','/[^a-zA-Z0-9]+/'), array('','_'), $str);
把它们组合成一个
我将如何再添加一个符号以允许说感叹号“!”
Roman Toasov 把它放在括号内的 \s 和括号内的 9 之后。以上是关于PHP Regex 仅允许 a-z A-Z 1-9 并用下划线替换空格的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅解决使用DiskLruCache报错: keys must match regex [a-z0-9_-]{1,64}
我的Android进阶之旅解决使用DiskLruCache报错: keys must match regex [a-z0-9_-]{1,64}