我有这段代码,它做了我想要的,但在四个步骤。我只想要字母数字小写字母,空格应该用下划线代替。我已经写了这个函数,但想知道是否有可能使用一个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()
来做这个
您不能使用单个替换字符串,因为您正在执行两个不同的操作,但preg_replace()
可以将数组作为参数。这允许您在单个preg_replace()
调用中进行多组替换。
$str = strtolower('qwerty!@#$@#$^@#$Hello %#$sdsdsss');
echo preg_replace(array('/ /', '/'W/'), array('_', ''), $str);
// output: qwertyhello_sdsdsss
'W
是一个与[^A-Za-z0-9_]
等价的反型简写字符类。
请注意,更换顺序很重要。替换将按照它们列出的顺序发生,因此您将以相反的顺序得到不同的结果:第一个非单词字符将被替换,然后是空格,但空格将在第一步中已经被删除。
echo preg_replace(array('/'W/', '/ /'), array('', '_'), $str);
// output: qwertyhellosdsdsss