2017-09-26 7 views
0

Contexte: Nous utilisons des modèles de guidons. Les petits, qui ne sont nécessaires qu'une seule fois, nous avons inséré dans le script, en HTML. HTML sont pré-traduits, une fois en sortie.simple_html_dom trouver le code HTML dans le script

Problème:

Avec simple_html_dom, nous trouvons tous les textes pertinents. Sauf ceux qui sont dans la balise de script!

Exemple "normal"

<h5 class="ues mt-1">Anmerkung ändern {bezeichnung}</h5> 

exemple à l'intérieur de script

<script id="template-Liste-Anmerkungen" type="text/x-handlebars-template"> 
    <h5 class="ues mt-1">Anmerkung ändern {bezeichnung}</h5> 
</script> 

Nous trouvons tous les textes pertinents par classe EUE:

$html = new simple_html_dom(); 
$html->load($strHTML, true, false); 
$HTMLElemente = $html->find('.ues'); 

Tous ues se trouvent, peu importe comment ils sont profondément entrelacés à l'intérieur des formes et des modaux. Mais les ues dans la balise de script sont introuvables. C'est toujours du HTML pur et propre, que pouvons-nous faire? Oui, j'ai trouvé des questions similaires, certaines n'étaient pas suffisamment documentées, aucune n'avait de solution pertinente.

Répondre

1

Vous souhaitez parcourir les balises de script et charger le contenu séparément.

$str = <<<EOF 
<script id="template-Liste-Anmerkungen" type="text/x-handlebars-template"> 
    <h5 class="ues mt-1">Anmerkung ändern {bezeichnung}</h5> 
</script> 
EOF; 

$doc = str_get_html($str); 
foreach($doc->find('script') as $script){ 
    $sub_doc = str_get_html($script->innertext); 
    foreach($sub_doc->find('.ues') as $el){ 
    echo $el; 
    } 
} 
+0

Merci! Comme dans votre réponse, je charge la chaîne à l'intérieur du script dans un nouveau simple_html_dom(); Ça marche! Génial! –