J'utilise cURL pour obtenir une page Web et la présenter à nos utilisateurs. Les choses ont bien fonctionné jusqu'à ce que je suis tombé sur un site web en utilisant des quantités considérables d'Ajax qui est formaté si:Scénarisation shell pour effectuer une correspondance/remplacement d'expressions rationnelles
33687|updatePanel|ctl00_SiteContentPlaceHolder_FormView1_upnlOTHER_NATL|
<div id="ctl00_SiteContentPlaceHolder_FormView1_othernationalities">
<h4>
<span class="tooltip_text" onmousemove="widetip=false; tip=''; delayToolTip(event,tip,widetip,0,0);return false"
onmouseout="hideToolTip()">
<span id="ctl00_SiteContentPlaceHolder_FormView1_lblProvideOTHER_NATL">Provide the following information:</span></span>
</h4>
|
266|scriptBlock|ScriptContentNoTags|
document.getElementById('ctl00_SiteContentPlaceHolder_FormView1_dtlOTHER_NATL_ctl00_csvOTHER_NATL').dispose = function() {
Array.remove(Page_Validators, document.getElementById('ctl00_SiteContentPlaceHolder_FormView1_dtlOTHER_NATL_ctl00_csvOTHER_NATL'));
}
Ainsi, chaque partie de la réponse est de 4 parties: 2 et 3 ne sont que des identifiants, 4 est le corps réel » ", et 1 est la longueur du corps. Le problème vient du fait que nous modifions le corps, et je dois pouvoir mettre à jour la longueur de la 1ère partie pour l'indiquer; Dans le cas contraire, nous lançons une erreur d'analyse lors de l'insertion dans la page Web. (En utilisant « a) lire le fichier enregistré b) exécuter une expression rationnelle pour rassembler chaque bloc d'information individuel (:
J'essaie de trouver une combinaison de commandes shell (awk, sed, peu importe) à \ d *?) \ | (. ?) \ | (.?) \ | (. *?) \ | ') c) rendre le premier groupe de capture égal à la longueur du dernier groupe de capture d) enregistrer toutes les correspondances regex à un nouveau document ou revenir à l'original
Toute contribution de "le collectif" serait grandement appréciée.