28 Stimmen

URL-freundlicher Benutzername in PHP?

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?

103voto

Alix Axel Punkte 146320
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

3voto

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X