2017-05-25 2 views
0

Voici mon problème, je veux obtenir du texte à partir de HTML en utilisant HTML DOM.PHP Simple HTML DOM Parser: Sélectionnez plusieurs éléments

<div class="smalldesc"> 
 
    <div itemprop="datePublished" class="date">Kamis, 25 Mei 2017 | 14:49 WIB</div> 
 
    <div itemprop="author" itemscope itemtype="http://schema.org/Person" class="author">Oleh : <b></b><b>...</b></div> 
 
</div>

Le texte que je veux obtenir est "Kamis, 25 Mei 2017 | 14h49 WIB". Voici ce que j'ai essayé:

$data->find('div[itemprop=datePublished class=date]',0) 

et

$data->find('div[itemprop="datePublished" class="date"]',0) 

Mais je suis toujours nulle, comment puis-je sélectionner deux produits en même temps?

+0

Avez-vous essayé 'trouver ('div.date', 0) -> plaintext' – Danijel

+0

@Danijel oui, obtenir encore nulle. – thomyfarhan

Répondre

0

HTML simple DOM Parser ne fournit pas une fonction pour sélectionner un élément à identifier deux ou plusieurs attributs. En disant cela, div[itemprop=datePublished class=date] est vu une poubelle à la classe de sélection.

Je ne recommande pas du tout cette bibliothèque tant qu'il y a une méthode intégrée, plus performative et plus simple pour l'analyse DOM: DOMXPath.

$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$dox = new DOMXPath($dom); 
$dateEl = $dox->query("//div[@itemprop='datePublished'][@class='date']")->item(0); 

echo $dateEl->textContent; // Kamis, 25 Mei 2017 | 14:49 WIB 

PHP live demo

0

Essayez de faire cette

$data->find('.date');

+0

ne fonctionne pas .. toujours obtenir null – thomyfarhan

+0

Je peux confirmer que cela fonctionne. Peut-être un problème de chargement de la page Web? – pguardiario