J'ai un programme PHP qui, à un moment donné, doit analyser une grande quantité de texte HTML + javascript pour analyser les informations. Tout ce que je veux analyser doit être en deux parties.Amélioration d'une instruction regex pour être aussi efficace que possible
- tous "HTML Seperate goupes" pour analyser
- Parse chaque groupe HTML pour obtenir les informations nécessaires.
Au 1er Parse il doit trouver:
<div id="myHome"
Et commencer la capture après cette balise. Puis arrêtez la capture avant
<span id="nReaders"
Et de capturer le numéro qui vient après cette balise et d'arrêter.
Dans la 2ème analyse, la capture nº 1 (0 a le tout et 2 le numéro) de l'analyse effectuée précédemment, puis trouve . J'ai déjà un code pour le faire et cela fonctionne. Y a-t-il un moyen d'améliorer cela, de faciliter l'analyse de la machine?
preg_match_all('%<div id="myHome"[^>]>(.*?)<span id="nReaders[^>]>([0-9]+)<"%msi', $data, $results, PREG_SET_ORDER);
foreach($results AS $result){
preg_match_all('%<div class="myplacement".*?[.]php[?]((?:next|before))=([0-9]+).*?<tbody.*?<td[^>]>.*?[0-9]+"%msi', $result[1], $mydata, PREG_SET_ORDER);
//takes care of the data and finish the program
Note: Je en ai besoin pour un programme freeware donc il doit être aussi générale que possible et, si possible, ne pas utiliser des extensions php
ADD: J'omises quelques pièces ici parce que je ne l'ai pas attendre des réponses comme celles-ci. Il est également nécessaire d'analyser le texte à l'intérieur d'une des balises du document. Ce peut être la 6ème 7ème ou 8ème étiquette mais je sais que c'est après une certaine étiquette. L'analyseur que j'ai vérifié (thx profitphp) fonctionne pour trouver l'étiquette de script. Et maintenant? Il y a plus d'une étiquette avec la même classe. Je les veux tous. Mais je veux seulement avec aussi une d'une liste de classes ..... Où puis-je trouver des instructions et des démos et des limites de parseurs DOM (comme celui de http://simplehtmldom.sourceforge.net/)? J'ai besoin de quelque chose qui fonctionnera, au moins, une grande quantité de serveurs gratuits. Une autre chose. Comment analyser cette partie: "php? = ([0-9] +)" avec ces analyseurs HTML?
Le problème semble mieux adapté à un analyseur [html] (http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php). Voir les [réponses ici] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) qui expliquent pourquoi. – marcog
En règle générale, [ne pas utiliser regex pour analyser HTML] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454). – lonesomeday
euh, le fil quotidien "comment abus regex pour html parsing". – cbrandolino