Comportement anormal d'un fonction

cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011 - 31 mars 2011 à 11:14
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011 - 31 mars 2011 à 11:55
Bonjour,
Afin de générer une url suivant le titre d'un article j'ai écrit cette fonction
function GenerationUrl($text)
{
$text = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE',$text);
$text = strtr($text,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
$text = preg_replace('/\b\w{1,3}\b/', '', $text);
$text = preg_replace('/\W+/', '-', $text);
$text = trim($text, '-');
 
return $text;
}


Mais je rencontre deux problèmes :
Le premier est une notice d'erreur concernant la fonction iconv()
Notice: iconv() [function.iconv]: Detected an illegal character in input string in ......

La deuxième encore plus étrange le retour de cette fonction pour une utilisation identique.
J'explique : Dans mon formulaire de création d'article, il y a un champ "url". L'utilisateur saisie les mots clés qu'il souhaite dans son url et via un appel ajax de la fonction, il voie en live se que donnera son url.
Ensuite dans cette même page, j'utilise cette même fonction au moment d'enregistrer l'article en base.
Mais voila le résultat de sortie est différent :
Imaginons que dans le champ url j'écrive : "Ceci est un autre d'ajout de catégorie"
Avec l'appel ajax ca me donne : "ceci-autre-ajout-categorie" résultat ok
A l'enregistrement en basse : "ceci-autre-ajout" mauvais résultat

J'ai testé en appelant la fonction a la validation du formulaire sans enregistrement en base mais même constat "ceci-autre-ajout"
pourtant mon $_POST envoie bien la chaine complète "Ceci est un autre d'ajout de catégorie"

Autre bizarrerie :
Comme je le disais l'appel via ajax me renvoie la "bonne" url mais pas a la validation du formulaire.
J'ai commenté la ligne avec iconv() et l'a l'url via ajax n'est plus bonne (ceci-autre-ajout-cata-gorie) alors que l'url suite a validation du form est quand a elle ok (Ceci-autre-ajout-categorie).

J'y comprend vraiment rien, comment une même fonction peux avoir deux comportements différents ?

Merci de votre aide, je vais devenir fou

1 réponse

cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
31 mars 2011 à 11:55
Ok trouvé.
pour l'ajax j'utilise jquery et json.
json me retournait une url en utf-8 de ce type : Ceci+est+un+autre+d%27ajout+de+cat%C3%A9gori
J'ai donc rajouté dans le post du form un utf8_encode() pour afficher le même résultat.
0
Rejoignez-nous