URL Friendly Имя пользователя в PHP?

На моем сайте PHP в настоящее время пользователи регистрируются с адресом электронной почты и паролем. Я хотел бы добавить имя пользователя, это имя пользователя, которое g\set будет уникальным, и они не могут его изменить. Мне интересно, как я могу сделать это имя, в нем нет пробелов и работать в URL-адресе, поэтому я могу использовать там имя пользователя, чтобы ссылаться на его профили и другие материалы. Если в нем есть пробел, тогда он должен добавить символ подчеркивания jason_davis. Я не уверен, что это лучший способ сделать это?

Ответ 1

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

Ответ 2

Другими словами... вам нужно создать пул имен пользователей. У доктрины (ORM для PHP) есть хорошая функция для этого. Doctrine_Inflector:: urlize()

РЕДАКТИРОВАТЬ. Вы также должны сохранить имя пользователя в базе данных, как столбец "Уникальный ключ". Затем каждая операция поиска должна выполняться на основе этого столбца, а не оригинального имени пользователя.