IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Analyser un tableau HTML


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Tableaux] Analyser un tableau HTML
    Bonjour
    J'ai une valeur $_POST qui contient un texte, au format HTML. Je m'escrime à nettoyer ce HTML, balise par balise, pour l'imprimer ensuite au sein d'un PDF.
    Pas de soucis pour la plupart des balises (ereg_replace) mais je bute sur les tableaux.

    En effet, il me faut récupérer les valeurs des tableaux HTML et les transformer en tableau PHP. Pour ca, je comptais me servir de split, ou explode.
    Mais la, je cale. En premier lieu il me faut séparer les tableaux du reste du texte, et les un des autres.
    Hors, je n'obtiens a chaque fois qu'une seule valeur en retour, qui part du premier <TABLE> et s'arrête au dernier du second ou troisieme </TABLE>... Comme j'ai testé plusieurs fonctions, je suppose que l'erreur viens de mon motif mais je n'arrive a rien.

    J'ai teste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motif_tab = '#\<table [^>]+>([^[]+)\</table>#';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motif_tab = '#\<table [^>]+>(.*)\</table>#';
    et pas mal d'autres, dont je n'ai pas gardé trace.
    Des idées ?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motif_tab = '#<table(.*)>(.*)</table>#U';
    c'est surtout le "U" de la fin qui ferra la différence : http://php.net/pcre.pattern.modifiers

  3. #3
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    A tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $liste_tableaux = array();
     
    preg_match_all('#<table>(.*?)</table>#si', $code, $matches);
     
    foreach( $matches as $match )
    {
    	$new_tab = array();
     
    	preg_match_all('#<tr>(.*?)</tr>#si', $match[1], $new_tab_matches);
     
    	foreach( $new_tab_matches as $new_tab_match )
    	{
    		preg_match_all('#<td>(.*?)</td>#si', $new_tab_match[1], $new_line_matches, PREG_PATTERN_ORDER);
     
    		$new_tab[] = $new_line_matches[1];
    	}
     
    	$liste_tableaux[] = $new_tab;
    }
     
    echo '$liste_tableaux = ';
    var_export($liste_tableaux);
    Transforme un tableau HTML en tableau php.
    Chaque tableau HTML est un tableau PHP ou chaque ligne du tableau HTML est un tableau PHP contenant les valeurs des cases du tableau HTML.

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci de vos réponses si rapide.

    Cela dit, ca ne marche pas mieux.

    Comme je commence a douter de tout, j'ai fait une page ultra minimaliste pour y voir clair.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $code='<table><tr><td>patataii</td><td>patata</td></tr></table><table><tr><td>blablah</td><td>blablah2222</td></tr></table>';
     
    $motif = '#<table(.*)>(.*)</table>#U';
    $chars= explode($motif,$code);
     
    echo $chars[0];
    Cete page me renvoie mes deux tableaux. Si je remplace l'indice du tableau par 1 ( $chars[1] ), j'obtiens une erreur : Notice: Undefined offset: 1 in ...

    J'ai également le meme code d'erreur avec la fonction de Korko (c'est neanmoins exactement le fonctionnement dont j'avais besoin, merci).

    Je fini par croire que je rate un truc qui me creve les yeux... mais la je vois plus

  5. #5
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    euh pourquoi explode ? Je ne vois pas ce que vien faire explode avec une regex lool ça ne doit pas fonctionner besef :p

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    OK, ce coup ci, ca marche...
    Effectivement, explode n'etait pas une bonne idee...

    Je suppose qu'a etre sur les meme lignes, je finis par faire n'importe quoi.

    Merci à tous les 2 en tout cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage de tableaux dans un tableau HTML
    Par remus69 dans le forum Langage
    Réponses: 7
    Dernier message: 03/04/2012, 14h29
  2. [RegEx] Analyse de tableau HTML avec nombre variable de cases
    Par ddelec24 dans le forum Langage
    Réponses: 9
    Dernier message: 11/04/2009, 21h39
  3. 2 tableaux dans un tableau HTML Possible ?
    Par bilou95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 17/08/2007, 19h31
  4. [Tableaux] Imprimer un tableau (HTML) avec Mysql
    Par vandeyy dans le forum Langage
    Réponses: 4
    Dernier message: 27/06/2007, 11h23
  5. [Tableaux] trouver taille tableau html en php
    Par eulalie15 dans le forum Langage
    Réponses: 4
    Dernier message: 03/07/2006, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo