print_r et balise html...

Répondre
mazar
le 30/03/2011 à 16:45
mazar
bonjour,
que faut-il faire pour que print_r affiche l'élément "<area ..." dans l'exemple ci-dessous dont la sortie est dans le commentaire (/* ... */)?
si je remplace "<" par "& lt;" alors print_r affiche correctement mais je veux garder "<" dans le tableau $x.
merci d'avance.
<?php
$x = array( "<area shape=\"poly\"", "coords=\"4497,2732,4457,2718,4501,2601,4543,2620\"", "href=\"#shon3\">");
foreach($x as $key => $item) { echo '[' . $key . '] ==> ' . htmlspecialchars($item) . '<br />'; }
echo "<pre>"; print_r($x); echo "<pre>";
/*
// foreach
[0] ==> <area shape="poly"
[1] ==> coords="4497,2732,4457,2718,4501,2601,4543,2620"
[2] ==> href="#shon3">
//print_r
Array
(
[0] => coords="4497,2732,4457,2718,4501,2601,4543,2620"
[2] => href="#shon3">
)
*/

?>
mazar
le 30/03/2011 à 18:01
mazar
oui, je comprends et c'est ce qui est fait avec "foreach" mais avec print_r, qui a pour argument un tableau, htmlentities ou htlmspecialchars n'aime pas le tableau..
moogli
le 31/03/2011 à 15:05
moogli
ben en fait print(_r), echo ou var_dump sont des fonctions permettant l'affichage c'est a dire que tout ce que tu leur donne va direct à l'écran.

si tu tiens a afficher le contenu d'un print_r il va falloir passer par un buffeur.
regarde les fonctions ob_* en commençant par ob_start ;)

@+
Il en faut peu pour être heureux !!!!!
mazar
le 31/03/2011 à 16:46
mazar
bravo, c'est la bonne piste...
en fait la solution la plus simple est str_replace():

print_r(str_replace("<",$r,$a));
où $r = "& lt;"; ou "& #60"; (sans espace après & d;)

j'en ai redécouvert la puissance de str_replace() qui admet des tableaux pour tous ses arguments...
merci encore
bonne journée
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours