在我的 PHP 站点上,当前用户使用电子邮件地址和密码登录。我也想添加一个用户名,他们 g\set 的这个用户名将是唯一的,他们无法更改它。我想知道如何使这个名称中没有空格并在 URL 中工作,这样我就可以使用那里的用户名链接到那里的个人资料和其他东西。如果用户名中有空格,则应添加下划线 jason_davis。我不确定最好的方法是什么?
问问题
21271 次
2 回答
100
function Slug($string)
{
return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([a-z]{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
于 2010-01-20T18:16:47.007 回答
3
换句话说……您需要创建一个用户名 slug。Doctrine(ORM for PHP)有一个很好的功能来做到这一点。Doctrine_Inflector::urlize()
编辑:您还应该将用户名 slug 作为唯一键列保留在数据库中。然后每个搜索操作都应该基于该列,而不是原始用户名。
于 2010-01-20T18:18:51.697 回答