2010-04-08 102 views
1

如何計算domDocument在html頁面中的單詞?用domDocument類計算單詞

例如,如果輸入是一樣的東西:

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

輸出:
編號字
1你好
2東西
3打開
4點擊
5 LOREM
6 ipsum
7在這裏。

而如果我只需要linktext?
點擊4
這裏7

回答

2

如果需要此整個文檔,它很可能容易只是strip_tags,然後運行的結果str_word_count

如果你有一個DOM要做到這一點,你可以做

$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)); 

使用text()作爲XPath expression只會給你的文檔中的textnodes。您可以將此限制爲僅爲表達式返回//a/text()的鏈接文本。

+0

謝謝,如果我想要統計鏈接之前的單詞,我應該怎麼做?例如在第一個鏈接3個單詞之前,在第二個鏈接之前6個單詞 – turbod 2010-04-08 16:57:45

+0

@turbod在這種情況下,您必須用DOM遍歷節點。 – Gordon 2010-04-08 17:14:40