我需要从我的应用程序中的玩家用户名中删除多余的空格(字母之间不止一次空格),并用一个空格替换它们。我不介意用户只有一个空格,但我需要删除彼此相邻的多个空格。目前我通过这种方式实现:
$replace_array=array(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ');
$fill_array=array('','','','','','','','','','','','','','');
$user_name=str_replace($replace_array,$fill_array,trim($_POST['name']));
$user_name=preg_replace('/[^a-zA-Z0-9 ]/','',$user_name);
这似乎完全没有必要删除多余的空格。或许,preg_replace函数是否已经处理了多余的空格?如果没有,我该怎么做才能简化这部分代码。
谢谢!
答案 0 :(得分:6)
preg_replace('/\s+/', ' ', $string);
答案 1 :(得分:1)
找到1个或多个空格并替换为1个空格:
preg_replace('/\s+/',' ',$user_name)
您也可以使用1 preg-replace语句
$user_name=preg_replace('/([^a-zA-Z0-9 ]|\s+)/','',$user_name);
答案 2 :(得分:0)
尝试像这样的preg_replace:
preg_replace('/\s{2,}/', ' ', $str);
答案 3 :(得分:0)
我的理解是,只需使用str_replace(' ', '')
即可解决您的问题。它取代了空间的多次出现。你也试过使用ltrim吗?