8797 sujets

Développement web côté serveur, CMS

Salut tous le monde!

Voila moi j'ai c'est deux lignes là

preg_match_all('`<h[3]>(.+?)</h[3]>`i', $txt, $out);
print_r ($out);

Mon print_r m'affiche ça :


upload/44976-Capturer7.JPG

Malheuresement l'affichage (logique c'est du tableau) me plait pas.
Je souhaiterais avoir un affichage normal des valeurs, juste ce qui est entouré en noir sur la photos.

J'ai beau faire un echo $out, sa marche pas
une echo $out[1], sa marche pas.

Quelqu'un aurait un bon conseil ?
Merci, cordialement,
Modifié par JuseN (12 Jun 2012 - 15:32)
Salut,

Une simple bloucle fera l'affaire:


foreach($out as $o)
{
  echo $o . "<br />";
}


et pour ta REGEXP, les crochets ne servent a rien (h[3] => h3) et le ton élément si tu le veut conditionnel: (.*), ce qui nous donne:

#<h3>(.*)</h3>#i
Modifié par JJK801 (12 Jun 2012 - 14:59)
Salut JJK801,

Bonne remarque, mais ça me fait sa :

upload/44976-Capturer8.JPG


Jme disait aussi qu'avec un foreach je parcourrais les lignes du tableau, et que je les mettrais dans une $var, et l'afficherais... mais à m'étais sortie de la tête Smiley smile

P.S :

J'ai mis entre crochet h[3] car au début je devait récupérer H2 et H3 , du coup j'avais fait <h[23]>, et j'ai oublier aussi d'enlever les crochets . Smiley lol
Naemesis a écrit :
Y a quoi ligne 55 dans ton compteur_titre.php ?


y'a justement l'echo

foreach($out as $o)
{
echo $o . "<br />"; <<<<< LIGNE 55
}
logique, t'as un tableau de tableau, regarde tout en haut de ton print_r :

Array([0] => Array([0] => ...

Tu dois mal remplir ton tableau je pense
Modifié par Naemesis (12 Jun 2012 - 15:20)
Okkk

En faite dans mon tableau $out, il y a DEUX tableau, en rajoutant dans le foreach la cellule 0 :

foreach($out[0] as $o)
{
echo $o . "<br />";
}


là sa marche. Mais sinon jme demandé 'pourquoi ai-je DEUX erreurs de array to string...'

Du coup j'ai vu sur mon premier screen qu'il y a enfaite 2 tableaux. Donc sans la précision de cellule pour $out, ça planté...

Merci de votre aide!
Cordialement,
Autant pour moi, j'avais zappé que le tableau était multidimentionnel
a écrit :

là sa marche. Mais sinon jme demandé 'pourquoi ai-je DEUX erreurs de array to string...'


parce que la boucle fait 2 tours (car tu a 2 lignes dans le tableau)
Modifié par JJK801 (12 Jun 2012 - 15:37)
Ouép, c'était pour ça!

Merci, grâce à ton foreach j'ai pu voir que y'avais deux tableau, et du coup en afficher qu'un. j'avais rien capté avant..

Cordialement,
Naemesis a écrit :
C'est pas le foreach qui montre ca, mais ton print_r. Suffit de le lire attentivement.


Dans son cas précis, c'est quand le foreach a planté qu'il l'a vu Smiley cligne , mais c'est vrai qu'il aurai du le voir avant (et moi aussi Smiley langue )
Pour récupérer des éléments d'un doc HTML vaut quand même mieux utiliser un objet DOM plutôt que des expressions rationnelles. C'est fait pour et ça fonctionne même si le document contient des erreurs (balises mal fermées, etc) ou si les balises contiennent des attributs :


$dom = new DOMDocument;
$dom->loadXML($txt);
$elements = $dom->getElementsByTagName('h3');

foreach ($elements as $e) {
    echo $e->nodeValue . '<br />';
}

Modifié par jb_gfx (13 Jun 2012 - 15:45)