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.