Salut à tous j'ai un petit souci que je vois partout sur les forums sans jamais trouver de réponse, j'en apelle au grand maitre Grafikart (sisi je sais que tu me lis =) ).

Plus sérieusement :
J'essaie de créer un permalink qui récupère mon titre de blog remplace les espaces par des tirêts et met le tout sans accents.

Tout fonctionne parfaitement si le titre est par exemple :
"Bonjour les amis" => "Bonjour-les-amis"
Tout se corse lors que le titre est :
"Vous avez mangé quoi ce midi déja ?" => "Vous-avez-mang-e-quoi-ce-midi-d-ej-a".

Voici mon code:

$titre = stripslashes($_POST['titre']);
setlocale(LC_CTYPE, 'fr_FR.UTF-8');
$Link = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $titre);
$Link = preg_replace(array('/[^a-zA-Z0-9 \'-]/', '/[ -\']+/', '/^-|-$/'),
array('', '-', ''), $Link);

Merci par avance

4 réponses


ProDJy
Réponse acceptée

remplace ton regex par celui la

/^[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ._-\s]+$/
magoabio
Auteur

Avec cette regex je n'ai plus du tout de résultat, j'ai remplacé les premiers crochets comme ça :

$Link = preg_replace(array('/^[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ._-\s]/', '/[ -\']+/', '/^-|-$/'),
magoabio
Auteur

Resalut ProDjy
J'ai finalement réussi à faire marcher ton code, en fait le petit tiret avant l'antislash-s (\s) était en trop merci beaucoup l'ami !

/^[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ._\s]+$/

oui et effet desoles mais derien pas soucis on est la pour aidez les autre non