URL友好的用户名在PHP?

在我的PHP网站上,当前用户使用电子邮件地址和密码login。 我想添加一个用户名,这个用户名他们g \设置将是唯一的,他们不能改变它。 我想知道如何使这个名称没有空格,并在url中工作,所以我可以使用那里的用户名链接到configuration文件和其他的东西。 如果在那里有一个空间的用户名,那么它应该添加一个下划线jason_davis。 我不确定最好的方法来做到这一点?

function Slug($string) { return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([az]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-')); } $user = 'Alix Axel'; echo Slug($user); // alix-axel $user = 'Álix Ãxel'; echo Slug($user); // alix-axel $user = 'Álix----_Ãxel!?!?'; echo Slug($user); // alix-axel 

换句话说,你需要创build一个用户名slu </s>。 Doctrine(ORM for PHP)有一个很好的function来做到这一点。 Doctrine_Inflector :: urlize()

编辑 :你也应该保持在数据库中的用户名slug作为唯一键列。 然后,每个search操作应该基于该列而不是原始用户名来完成。