URL Friendly Имя пользователя в PHP? - PullRequest
23 голосов
/ 20 января 2010

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

Ответы [ 2 ]

91 голосов
/ 20 января 2010
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
3 голосов
/ 20 января 2010

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

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

...