2011-07-10 5 views
1

comment pourrais-je prolonger ce preg_replace (en PHP), en utilisant des expressions régulières pour remplacer les espaces blancs aussi ..Comment reconnaître des espaces vides en utilisant des expressions régulières

$this->permalink = preg_replace('[^a-z0-9]', '-', $this->permalink); 

Il est pour générer permaliens page basée sur un titre de page. «À propos de moi» deviendra «à propos de moi». tout va bien, sauf qu'il ne supprime pas encore l'espace.

Merci!

+0

Honnêtement, vous devriez probablement essayer un tutoriel regex rapide. C'est un truc vraiment basique. – coreyward

+0

Vous pouvez changer votre regex à '[^ a-z0-9] | \ s', mais votre expression ci-dessus fonctionne pour moi. – Bojangles

+0

Cela n'a pas fonctionné. '|' a cassé la fonction. – Alex

Répondre

2

Comme souligné dans le commentaire, votre expression régulière manque les délimiteurs. J'ai également ajouté le modificateur i pour qu'il soit insensible à la casse.

Exemple:

$this->permalink = preg_replace('/[^a-z0-9]/i', '-', $this->permalink); 

Voici un exemple de travail: http://codepad.org/OlzQax1c.

+0

C'est toujours faux. Son expression régulière supprimera les espaces, mais il manque les délimiteurs '/'. – coreyward

+0

@coreyward - Vous avez absolument raison. J'ai corrigé ma réponse et ajouté le modificateur 'i' aussi. Merci! –

+0

@Alex coady - C'est le cas. J'ai mal compris votre question, mais copiez la ligne ci-dessus et essayez à nouveau. –

2

Que diriez-vous

$this->permalink = preg_replace('/\W/i', '-', $this->permalink); 

\W est un caractère non-mot (lettre, chiffre, underscore)

Questions connexes