PHP-Variable entfernen, Leerzeichen durch Bindestriche ersetzen


72

Wie kann ich eine PHP-Variable von "Mein Unternehmen & Mein Name" in "Mein-Unternehmen-Mein-Name" konvertieren?

Ich muss alles in Kleinbuchstaben schreiben, alle Sonderzeichen entfernen und Leerzeichen durch Bindestriche ersetzen.


Antworten:


245

Diese Funktion erstellt eine SEO-freundliche Zeichenfolge

function seoUrl($string) {
    //Lower case everything
    $string = strtolower($string);
    //Make alphanumeric (removes all other characters)
    $string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
    //Clean up multiple dashes or whitespaces
    $string = preg_replace("/[\s-]+/", " ", $string);
    //Convert whitespaces and underscore to dash
    $string = preg_replace("/[\s_]/", "-", $string);
    return $string;
}

sollte gut sein :)


1
Vielen Dank. Es ist eine schöne einfache Funktion. Es wäre schön, erweitert zu werden, um bestimmte seo-unfreundliche Schlüsselwörter wie 'das' & 'und' zu entfernen.
Rorypicko

4
Diese Frage legt nahe, dass es sich nicht lohnt, Stoppwörter zu entfernen. Ich habe einen Kern erstellt, der Rorys Lösung eine akzentuierte Zeichenbehandlung hinzufügt.
ChrisV

Wie kann ich das erste und letzte Leerzeichen ohne -Symbol entfernen ?
Kvvaradha

@Kvvaradha Fügen Sie die folgende Zeile als erste Zeile in die Funktion ein $string = trim($string);und das wird Ihr Problem lösen.
Devner

wie man das benutzt
AjithChadda


8

Ja, und wenn Sie mit Sonderzeichen umgehen möchten, müssen Sie diese im Muster deklarieren, da sie sonst möglicherweise gelöscht werden. Sie können es so machen:

strtolower(preg_replace('/-+/', '-', preg_replace('/[^\wáéíóú]/', '-', $string)));
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.