Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2011, 09h56   #1
Membre du Club
 
Inscription : mai 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 209
Points : 50
Points : 50
Par défaut Comportement anormal d'une fonction

Bonjour,
Afin de générer une url suivant le titre d'un article j'ai écrit cette fonction
Code :
1
2
3
4
5
6
7
8
9
10
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
A l'enregistrement en basse : ceci-autre-ajout

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

Je ne comprend pas d'ou vient le pb.
Merci de votre aide
christobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 10h55   #2
Membre du Club
 
Inscription : mai 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 209
Points : 50
Points : 50
Autre découverte :
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 t'elle avoir deux comportement différent.
christobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 11h56   #3
Membre du Club
 
Inscription : mai 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 209
Points : 50
Points : 50
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.
christobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h46.


 
 
 
 
Partenaires

Hébergement Web