Nazwa użytkownika przyjazna URL w PHP?

Na mojej stronie PHP, obecnie użytkownicy logują się za pomocą adresu e-mail i hasła. Chciałbym również dodać nazwę użytkownika, Ta nazwa użytkownika, którą g \ set będzie unikalna i nie mogą jej zmienić. Zastanawiam się, jak Mogę zrobić, że ta nazwa nie ma spacji w nim i pracy w URL, więc mogę użyć tam nazwa użytkownika, aby link do tam profile i inne rzeczy. Jeśli jest tam spacja username, to należy dodać podkreślenie jason_davis. Nie jestem pewien, czy to najlepszy sposób?

Author: Alix Axel, 2010-01-20

2 answers

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
 91
Author: Alix Axel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-14 10:01:13

Innymi słowy... musisz utworzyć nazwę użytkownika slug. Doctrine (ORM dla PHP) ma do tego ładną funkcję. Doctrine_Inflector:: urlize()

EDIT: należy również zachować username slug w bazie danych, jako unikalną kolumnę klucza. Następnie każda operacja wyszukiwania powinna być wykonywana na podstawie tej kolumny, a nie oryginalnej nazwy użytkownika.

 3
Author: Crozin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-20 18:18:51