Accueil > Forum > > > > Algorithme de parsing ...
Algorithme de parsing ...
lundi 26 février 2007 à 14:48:31 |
Algorithme de parsing ...

LocalStone
|
Salut à tous, Une fois n'est pas coutume, j'ai une petite question n'a pas de rapport direct avec le PHP puisque c'est plus une question d'algorithmie. Je suis en train de faire une petite classe pour parser du HTML. Et pour l'instant, je veux juste savoir si une balise est ouvrante ou fermante ou alors si c'est un noeud de texte, sachant que je ne peux lire la source que mot par mot. Pour cela, ma classe possède une petite méthode jHtmlParser :: readNextToken() qui se charge de faire ça (sachant qu'un token, c'est soit "<", soit ">", soit "/", soit une chaine de caractère entre simple ou double quote soit un mot (html, div, onload, ...)). Je précise que si je fais ce choix de parsing à la volée, c'est pour que le parsing soit le plus rapide possible. La fonction principale jHtmlParser :: parse() est codée comme cela :
public function parse() { $text = ''; while(!$this -> isEndOfSource()) { $token = $this -> readNextToken(); if($token == '<') { if(trim($text) != '') { echo "On a un noeud de texte : $text. \n"; } $text = ''; $token = $this -> readNextToken(); if($token == '/') { $token = $this -> readNextToken(); echo "on a une balise fermante : $token. \n"; $this -> readNextToken(); } else { echo "On a une balise ouvrante : $token dont les attributs sont : \n"; $attributes = array(); while(true) { $token = $this -> readNextToken(); if($token == '/') $token = $this -> readNextToken(); if($token == '>') break; $key = $token; if($this -> readNextToken() != "=") throw new Exception("???"); $value = $this -> readNextToken(); $attributes[$key] = $value; } echo "Dont les attributs sont : "; print_r($attributes); } } else { $text .= ' '.$token; } } }
Alors l'avantage, c'est que ça marche plutôt bien. Mais le soucis, c'est que c'est moche. Surtout l'astuce pour récuperer les noeuds de texte. Alors si quelqu'un à une bonne solution à proposer ... Je suis preneur !
LocalStone
|
|
mercredi 28 février 2007 à 12:56:10 |
Re : Algorithme de parsing ...

coucou747
|
Salut, personellement, j'aurais fait une pile, ca permet de verifier en meme temps l'ordre des balises... le result aurait ete une pile de balises ouvertes, et un tableau de texte In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy Mon site (articles sur la programmation et programmes)
|
|
mercredi 28 février 2007 à 13:44:24 |
Re : Algorithme de parsing ...

LocalStone
|
Euh ... J'ai pas tout compris ! Mais l'idée de la pile est interessante. Tu peux détailler un peu ? Merci ! LocalStone
|
|
mercredi 28 février 2007 à 18:19:37 |
Re : Algorithme de parsing ...

coucou747
|
Salut, en C++ : tu te fais une class Balise (gestion des attribnuts ect...) tu te fais une classe ParseurXML (le html etant proche....) dans ParseurXML, une liste se String et une liste de Balise et une pile string pour le nom des balises (generer des erreurs lors des rencontres de balises croisees par exemples ou balises non fermees) quand tu croises une balise, tu l'empile et la place dans la liste, quand tu croises la fermeture, tu la depiles. ensuite, soit tu geres le texte avec un truc qui contiendrait le debut et la fin de chaque balise (dans ce cas, la liste de String ne sert a rien) soit dans la liste de String, tu places toutes les chaines entre les balises In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy Mon site (articles sur la programmation et programmes)
|
|
Cette discussion est classée dans : text, echo, parsing, token, readnexttoken
Répondre à ce message
Sujets en rapport avec ce message
aide pour mon moteur de recherche [ par kroland ]
j'aurai besoin d'aide pour mon moteur de recherche tout simple que je tante de concevoir... voila le code que j'ai fai pour le moment : tou d'abord l
pb de lecture valeur text [ par clem0338 ]
rebonjour, j'ai dans ma page : "ECHO "\n"; ECHO "\n"; ECHO "\n"; ECHO $HTTP_POST_VARS['txt'];"Mais malheuresement, ca
lecture d'un fichier text [ par sghayra ]
salut j un fishier text contenant le resultat de la commande mytraceroute j veux faire un script php qui permet de lire c fichier et mettre dans une
boutons confirmmation [ par gezaak ]
salut j'ai développer un bout de code (php) qui permet le vérification d'un nom dans une base de donne, si le nom existe il affiche un message "nom ex
Variable non affichée dans echo (source base de données) [ par diatodan ]
Bonjour, Voici mon problème : Lorsque je fait un echo à partir d'une base de données les variables ne sont pas remplacées et s'affichent comme ça :'.
Une erreur mysql_fetch_assoc() [ par squallio ]
Bonjour à tous est à toutes. Je vous expose mon probléme avec ce script : [code=php] <?php if (!isset($_SESSION)) { session_start(); } $MM_authoriz
Problème d'affichage des liens [ par ren999 ]
Bonjour a tous voila j'ai créé un site qui génère des pages depuis la base de donné il fonctionne comme un forum seulement je suis le seul a pouvoir
aidez moi a corriger cette classe php [ par mannnourou7i ]
<?php class membre { public $id ; public $nom ; public $prenom; public $adress; public $email; public
checkbox en php [ par nejla25kachroudi ]
Bonjour,j'ai un problème au niveau de checkbox,j'ai un formulaire sous forme d'un tableau de coordonnées des étudiants (les coordonnées sont enregistr
Utiliser la valeur du champ text dans une requête [ par nostalgieing ]
Salut à tous, J'aimerai savoir s'il vous plaît comment pourrai je utiliser la valeur d'un champ text dans une requête sans ni post ni get Je m'expliq
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
XML ET PHPXML ET PHP par karouani
Cliquez pour lire la suite par karouani RE : GOOGLE MAPRE : GOOGLE MAP par inwebo
Cliquez pour lire la suite par inwebo
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|