2010-04-08 6 views
1

Comment puis-je compter les mots dans une page html, avec domDocument?compter les mots avec la classe domDocument

par exemple, si l'entrée est quelque chose comme:

<div> Hello something open. <a href="open.php">click</a> 
    lorem ipsum <a href="open.php">here></a> 

la sortie:
Nombre de mots
1 Bonjour
2 quelque chose
3 ouvert
4 Cliquez
5 lorem
6 ipsum
7 ici.

Et si je n'ai besoin que du linktext?
cliquez sur 4
ici 7

Répondre

2

Si vous avez besoin pour cela l'ensemble du document, il est probable plus facile de strip_tags puis exécutez str_word_count sur le résultat.

Si vous devez le faire avec DOM, vous pouvez faire

$str = <<< HTML 
<div> Hello something open. <a href="open.php">click</a> 
lorem ipsum <a href="open.php">here></a></div> 
HTML; 

$dom = new DOMDocument; 
$dom->loadHTML($str); 

$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('//text()'); 

$textNodeContent = ''; 
foreach($nodes as $node) { 
    $textNodeContent .= " $node->nodeValue"; 
} 
print_r(str_word_count($textNodeContent, 1)); 

En utilisant text() comme XPath expression ne vous donnera les nœuds texte dans le document. Vous pouvez limiter ceci à juste retourner les textes de lien avec //a/text() pour l'expression.

+0

Merci, et que dois-je faire si je veux compter les mots avant les liens? exemple avant le premier lien 3 mots, avant les seconds liens 6 mots – turbod

+0

@turbod dans ce cas, vous auriez à parcourir les nœuds avec DOM. – Gordon