我有这个代码可以做我想要的,但分四个步骤。我只想要字母数字小写字母,空格应该用下划线替换。我已经编写了这个函数,但想知道是否可以通过一个preg_replace()
函数调用:
$str = 'qwerty!@#$@#$^@#$Hello %#$sdsdsss';
$cityu= strtolower($str);
$id = str_replace(' ', '_', $cityu);
$outcome = preg_replace("/[^a-zA-Z0-9_]/", "", $id);
var_dump($outcome);
我想要一个preg_replace()
来做这件事。
答案 0 :(得分:1)
您不能使用单个替换字符串,因为您正在执行两个不同的操作,但preg_replace()
可以将数组作为参数。这允许您在单个preg_replace()
调用中创建多组替换。
$str = strtolower('qwerty!@#$@#$^@#$Hello %#$sdsdsss');
echo preg_replace(array('/ /', '/\W/'), array('_', ''), $str);
// output: qwertyhello_sdsdsss
\W
是一个否定的简写character class,相当于[^A-Za-z0-9_]
。
请注意,替换订单很重要。替换将按其列出的顺序进行,因此您将以相反的顺序获得不同的结果:首先替换非单词字符,然后替换空格,但在第一步中已经删除了空格。
echo preg_replace(array('/\W/', '/ /'), array('', '_'), $str);
// output: qwertyhellosdsdsss