Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
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 26/06/2008, 12h34   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 67
Points : 12
Points : 12
Par défaut htmlentities et foreach

bonjou à tous,

J'ai un problème avec l'utilisation de htmlentities dans une boucle foreach. Cette boucle permet de transformer tous les $_POST envoyés de mon formulaire en fonctions. Je pensais pouvoir transformer par la meme occasion la valeur de mes fonctions en entités HTML avec htmlentities, mais cela ne fonctionne pas.

Voici le code:
Code :
1
2
3
4
5
 
foreach($_POST as $key=>$value) {
	$$key = $value;
	$$key = htmlentities($$key, ENT_COMPAT);
}
J'ai aussi essayé de la manière suivante:
Code :
1
2
3
4
 
foreach($_POST as $key=>$value) {
	$$key = htmlentities($value, ENT_COMPAT);
}
Aucune des 2 syntaxes ne fonctionne. Foreach et htmlentities sont-ils incompatibles ou me suis-je trompé dans la syntaxe?

Merci par avance pour votre aide.
tarzanjane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 13h09   #2
Membre actif
 
Avatar de BlackSmith
 
Inscription : mars 2008
Messages : 181
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : mars 2008
Messages : 181
Points : 186
Points : 186
Essaye comme ceci.
Code :
1
2
3
4
 
foreach($_POST as $key=>$value) {
	$_POST[$key] = htmlentities($value, ENT_COMPAT);
}
BlackSmith est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 14h01   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 67
Points : 12
Points : 12
Citation:
Envoyé par BlackSmith Voir le message
Essaye comme ceci.
Code :
1
2
3
4
 
foreach($_POST as $key=>$value) {
	$_POST[$key] = htmlentities($value, ENT_COMPAT);
}
En fait, cela ne change rien ...

Pour préciser, cela ne me sort pas d'erreur d'écriture, mais le les valeurs des fonctions contiennent toujours des accents après la boucle foreach (dans les 3 cas)

Y'a-t-il une autre solution?
tarzanjane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 14h39   #4
Membre actif
 
Avatar de BlackSmith
 
Inscription : mars 2008
Messages : 181
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : mars 2008
Messages : 181
Points : 186
Points : 186
enfaite tu veut juste supprimer des accents.

Code :
1
2
3
 
$text = htmlentities($text, ENT_COMPAT,'UTF-8');
$text = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $text );
Après avoir transformer les accents en entité html, il te faut les remplacer par des lettres non accentués.
BlackSmith est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 15h00   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 67
Points : 12
Points : 12
Citation:
Envoyé par BlackSmith Voir le message
enfaite tu veut juste supprimer des accents.

Code :
1
2
3
 
$text = htmlentities($text, ENT_COMPAT,'UTF-8');
$text = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $text );
Après avoir transformer les accents en entité html, il te faut les remplacer par des lettres non accentués.
En fait, j'ai trouvé la solution, car en fait, la fonction que j'utilisais etait la suivante:
Code :
1
2
3
4
5
6
 
foreach($_POST as $key=>$value) {
	$$key = $value;
	$$key = htmlentities($$key, ENT_COMPAT);
        $_SESSION[$key] = $value;
}
Mais sur le forum, j'avais enlevé la dernière ligne pour éviter les confusions lors l'explication de mon problème. Au final, il s'avère que c'est cette ligne qui pose problème dans ma fonction, sans savoir pourquoi ...

J'ai donc changé cette ligne de place et tout est rentré dans l'ordre.
Code :
1
2
3
4
5
6
 
foreach($_POST as $key=>$value) {
	$$key = $value;
	$_SESSION[$key] = $value;
	$$key = stripslashes(htmlentities($$key, ENT_COMPAT));
}
Si, au cas où, vous savez pourquoi ca bloquait sous l'ancienne forme, dites le moi
tarzanjane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2008, 13h06   #6
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
Ca bloquait pour une raison tres simple :
- $$key et $value sont 2 variables différentes.

Ton code aurait marché comme ça
Code :
1
2
3
4
5
foreach($_POST as $key=>$value) {
	$$key = $value;
	$$key = htmlentities($$key, ENT_COMPAT);
        $_SESSION[$key] = $$key;
}
Moralité : ne jamais préjuger de ce qui est utile ou non dans un script
Phelim 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 20h53.


 
 
 
 
Partenaires

Hébergement Web