PHP中的URL友好用户名?

Jas*_*vis 23 php string friendly-url slug

在我的PHP站点上,当前用户使用电子邮件地址和密码登录.我想添加一个用户名,他们设置的用户名将是唯一的,他们无法更改.我想知道如何使这个名称没有空格并在URL中工作,所以我可以使用用户名链接到配置文件和其他东西.如果用户名中有空格,则应添加下划线jason_davis.我不确定最好的方法吗?

Ali*_*xel 93

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
Run Code Online (Sandbox Code Playgroud)

  • @John Feminella:在存放slug之前,他显然必须在某个时候检查重复. (11认同)
  • 这很危险!多个唯一用户名可以映射到同一个URL.这不是你想要的,是吗?考虑一下,例如,`AB`和`ab`,它们是唯一的字符串,但映射到相同的段塞字符串.您应该将slug存储为标识符. (9认同)
  • 好的,Älix! (2认同)
  • `Slug()`函数的键盘演示,具有第二个相同但间隔开的`nSlug()`函数(用于眼球受损):http://codepad.org/rJNSQmGJ (2认同)