[英]Count all HTML tags in page PHP
我花時間在正則表達式來解決這個問題,但沒有結果我嘗試使用PHP 5.3解決這個問題的信息 - 在頁面中重復多少次和頁面中所有標簽的信息。
遺憾的是,你的問題在目前的形式中幾乎無法理解。 請嘗試更新它並更具體。 如果要計算頁面中的所有HTML標記 ,可以執行以下操作:
$HTML = <<< HTML
<html>
<head>
<title>Some Text</title>
</head>
<body>
<p>Hello World<br/>
<img src="earth.jpg" alt="picture of earth from space"/>
<p>
<p>Counting Elements is easy with DOM</p>
</body>
</html>
HTML;
使用DOM計算所有DOMElements:
$dom = new DOMDocument;
$dom->loadHTML($HTML);
$allElements = $dom->getElementsByTagName('*');
echo $allElements->length;
以上將輸出8
,因為DOM中有八個元素。 如果您還需要知道元素的分布 ,您可以這樣做
$elementDistribution = array();
foreach($allElements as $element) {
if(array_key_exists($element->tagName, $elementDistribution)) {
$elementDistribution[$element->tagName] += 1;
} else {
$elementDistribution[$element->tagName] = 1;
}
}
print_r($elementDistribution);
這會回來
Array (
[html] => 1
[head] => 1
[title] => 1
[body] => 1
[p] => 2
[br] => 1
[img] => 1
)
請注意,getElementsByTagName僅返回DOMElements 。 它沒有考慮結束標記,也沒有返回其他DOMNode。 如果還需要計算結束標記和其他節點類型,請考慮使用XMLReader 。
$testHTML = file_get_contents('index.html');
$search = preg_match_all('/<([^\/!][a-z1-9]*)/i',$testHTML,$matches);
echo '<pre>';
var_dump($matches[1]);
echo '</pre>';
為您提供所有標簽的數組。 一旦數據在數組中,你就可以使用所有標准的PHP數組函數 - 例如array_count_values() - 來提取你想要的細節......盡管你並沒有真正說出你想要的關於html標簽的信息
使用array_count_values()和preg_match_all()的結果:
echo '<pre>';
var_dump(array_count_values($matches[1]));
echo '</pre>';
給
array(5) {
["html"]=>
int(1)
["head"]=>
int(1)
["title"]=>
int(1)
["body"]=>
int(1)
["h1"]=>
int(2)
}
這是你想要的嗎?
我建議你結賬simple html dom
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.