2011-04-29 3 views
2

Je peux accéder à certains des éléments « de classe » avec unComment accéder aux sélecteurs DOM simples?

$ret = $html->find('articleINfo'); and then print the first key of the returned array. 

Cependant, il y a d'autres balises dont j'ai besoin comme span class = id « firstArticle_0 » et je ne peux pas sembler le trouver. Dans certains cas, quelque chose est renvoyé, mais ce n'est pas un tableau ou un tableau avec des clés vides.

Malheureusement, je ne peux pas utiliser var_dump pour voir l'objet, puisque var_dump produit 1000 pages de courrier indésirable illisible. Le code ressemble à ceci.

<div id="articlething"> 
    <p class="byline">By Lord Byron and <a href="www.marriedtothesea.com">Alister Crowley</a></p> 
    <p> 
    <span class="location">GEORGIA MOUNTAINS, Canada</span> | 
    <span class="timestamp">Fri Apr 29, 2011 11:27am EDT</span> 
    </p> 
</div> 
<span id="midPart_0"></span><span class="mainParagraph"><p><span  class="midLocation">TUSCALOOSA, Alabama</span> - Who invented cheese? Everyone wants to know. They held a big meeting. Tom Cruise is a scientologist. </p> 

</span><span id="midPart_1"></span><p>The president and his family visited Chuck-e-cheese in the morning </p><span id="midPart_2"></span><p>In Russia, 900 people were lost in the balls.</p><span id="midPart_3"> 
+1

alternatives de tiers proposées à [SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) qui utilisent effectivement [DOM] (http://php.net/manual /en/book.dom.php) au lieu de l'analyse de chaînes: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/ en/zend.dom.html), [QueryPath] (http://querypath.org/) et [FluentDom] (http://www.fluentdom.org). – Gordon

+1

SimpleHtmlDom est le chemin à parcourir. – jini

+1

@jini SimpleHtmlDom est la merde :) – Gordon

Répondre

0

HTML simple DOM peut être utilisé facilement pour trouver une plage avec une classe spécifique.

Si vous voulez de toute durée avec class = emplacement, puis:

// create HTML DOM 
$html = file_get_html($iUrl); 

// get text elements 
$aObj = $html->find('span[class=location]'); 

faire quelque chose comme:

foreach($aObj as $key=>$oValue) 
{ 
    echo $key.": ".$oValue->plaintext."<br />"; 
} 

Il a travaillé pour moi en utilisant votre exemple ma sortie était:

label = span, class = location: Trouvé 1

0: GÉORGIE, Canada

Espérons que cela aide ... et s'il vous plaît Simple HTML DOM est idéal pour ce qu'il fait et facile à utiliser une fois que vous l'avez compris. Continuez à essayer et vous aurez un certain nombre d'exemples que vous utilisez encore et encore. J'ai gratté des pages assez folles et elles deviennent de plus en plus faciles.

0

Les documents sur l'analyseur PHP Simple DOM sont irréguliers lors du déchiffrement des métabalises Open Graph. Voici ce qui semble fonctionner pour moi:

<?php 
// grab the contents of the page 
$summary = file_get_html($url); 

// Get image possibilities (for example) 

$img = array(); 

// First, if the webpage has an og:image meta tag, it's easy: 
if ($summary->find('meta[property=og:image]')) { 
    foreach ($summary->find('meta[property=og:image]') as $e) { 
    $img[] = $e->attr['content']; 
    } 
} 
?> 
Questions connexes