68 votes

Suppression de la variable php, remplacement des espaces blancs par des tirets

Comment convertir une variable PHP de "My company & My Name" en "my-company-my-name" ?

Je dois tout mettre en minuscules, supprimer tous les caractères spéciaux et remplacer les espaces par des tirets.

236voto

rorypicko Points 1766

Cette fonction va créer une chaîne de caractères adaptée au référencement

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;
}

Cela devrait aller :)

9voto

NoLifeKing Points 1167

Remplacer des personnages spécifiques : http://se.php.net/manual/en/function.str-replace.php

Exemple :

function replaceAll($text) { 
    $text = strtolower(htmlentities($text)); 
    $text = str_replace(get_html_translation_table(), "-", $text);
    $text = str_replace(" ", "-", $text);
    $text = preg_replace("/[-]+/i", "-", $text);
    return $text;
}

Lien avec un exemple de travail : http://ws10.dns.multinet.se/test/geotest.php

8voto

Pierre Voisin Points 61

Yop, et si vous voulez gérer des caractères spéciaux, vous devrez les déclarer dans le modèle, sinon ils risquent d'être supprimés. Vous pouvez le faire de cette façon :

strtolower(preg_replace('/-+/', '-', preg_replace('/[^\wáéíóú]/', '-', $string)));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X