Auf meiner PHP-Website melden sich die Benutzer derzeit mit einer E-Mail-Adresse und einem Passwort an. Ich möchte auch einen Benutzernamen hinzufügen, diesen Benutzernamen sie g \set ist einmalig und kann nicht geändert werden. Ich frage mich, wie ich diesen Namen so gestalten kann, dass er keine Leerzeichen enthält und in einer URL funktioniert, so dass ich den Benutzernamen verwenden kann, um auf ihre Profile und andere Dinge zu verlinken. Wenn ein Leerzeichen im Benutzernamen vorkommt, sollte ein Unterstrich hinzugefügt werden: jason_davis. Ich bin mir nicht sicher, wie ich das am besten anstelle?
Antworten
Zu viele Anzeigen?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
Crozin
Punkte
42878
Mit anderen Worten... Sie müssen einen Slug für den Benutzernamen erstellen. Doctrine (ORM für PHP) hat eine schöne Funktion, um dies zu tun. Doctrine_Inflector::urlize()
EDIT : Sie sollten auch den Slug des Benutzernamens in der Datenbank als eindeutige Schlüsselspalte speichern. Dann sollte jeder Suchvorgang auf der Grundlage dieser Spalte und nicht des ursprünglichen Benutzernamens durchgeführt werden.