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 06/08/2011, 15h52   #1
Futur Membre du Club
 
Inscription : juillet 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 81
Points : 17
Points : 17
Par défaut Problème passage PHP 5.2 -> 5.3 avec fonction iconv()

Bonjour,

Je suis entrain de passer un site en PHP 5.2 dans la version 5.3 et j'ai un problème avec une de mes fonctions qui utilise iconv().

Voici la fonction qui pose problème:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
setlocale(LC_ALL, 'frFR.UTF8');
function enAscii($str, $replace=array(), $delimiter='-') {
	if( !empty($replace) ) {
		$str = str_replace((array)$replace, ' ', $str);
	}
 
	$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
	$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
	$clean = strtolower(trim($clean, '-'));
	$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
 
	return $clean;
}
Les chaînes qui rentrent dans cette fonction ressortent vide, je ne comprend vraiment pas pourquoi.

Ma version exacte de PHP est 5.3.5 (MAMP)

Merci d'avance pour votre aide.
clement106 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 18h07   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 107
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 107
Points : 8 455
Points : 8 455
fait un var_dump a chaque etape
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2011, 17h38   #3
Futur Membre du Club
 
Inscription : juillet 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 81
Points : 17
Points : 17
Merci pour ta réponse.

J'ai donc testé avec un var_dump avant et après la fonction iconv()

Voiçi le résultat qui en resort:
Code :
string(7) "Aprilia" string(0) ""
La chaîne est supprimée.

En recherchant sur le web, j'ai compris que cela vient en faite de la configuration du serveur, donc de Mamp ou OSX. J'ai donc testé la même fonction en version de production est ça marche sans problème...

Du coup pour palier au problème, j'ai simplement rajouté un test avec la constante de connexion MySQL user qui est par défaut 'root' sur mon serveur de test.

Ce qui donne:
Code :
1
2
3
4
5
6
 
if(DB_USER_SITE != 'root') {
  $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
} else {
  $clean = $str;
}
Oui je sais, c'est pas très pro mais ça marche
clement106 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 09h28   #4
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 111
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 111
Points : 37
Points : 37
Bonjour,

personne ne sait corriger ce problème proprement ?
Arnich est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 06/10/2011, 09h49   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 107
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 107
Points : 8 455
Points : 8 455
Citation:
Envoyé par Arnich Voir le message
Bonjour,

personne ne sait corriger ce problème proprement ?
ça dépend avec quelle lib est compilé iconv
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h48.


 
 
 
 
Partenaires

Hébergement Web