2010-03-17 106 views
0

我遇到了正則表達式的問題! 我如何計算正則表達式的html標籤?如何計算html標籤和內容

+0

你是在開玩笑吧,不是嗎?如果不是,不,你不能,你不應該。閱讀http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – Amarghosh 2010-03-17 09:32:06

+3

只要計算'<'的數量 - 這會給你相同的用正則表達式可以得到一種精確度。 – 2010-03-17 09:35:43

+0

另外,即使你準備好處理使用它的問題,正則表達式也不會計數。至少你必須使用例如perl將html加載到變量中,並對「<」(不包括「<! - 」)執行split(),然後檢查結果數組的長度。 – Timo 2010-03-17 09:47:16

回答

2

不要使用正則表達式使用DOM。我不確定你會怎麼做,但它幾乎肯定會更容易與DOM: http://php.net/manual/en/book.dom.php

+0

謝謝。 DomDocument類很好,解決了我的問題,但我還有最後一個問題。我需要的名稱 - (關鍵字)和 的內容 - (一些東西一切)。我有一個meta標籤: 。 如何獲得DomDocument類的名稱和內容? – turbod 2010-03-17 11:14:24

+0

$ meta = $ dom-> getElementsByTagName('meta'); ($ i = 0; $ i < $meta-> length; $ i ++){ echo $ meta-> item($ i) - > getAttribute('name')。「 - 」。$ meta-> item($ i ) - > getAttribute('content')。「
」; } – turbod 2010-03-17 11:27:36

1

正則表達式並不旨在這樣做。有一個更好的解決方案,你的問題,只是檢查其他答案。

如果你只是需要一次,作爲一個快速和骯髒的黑客,並不關心邊緣情況下(如字符串中使用的逃逸標籤),你可以使用"<\w+"來匹配起始標籤,並計數匹配數。

但是你不應該這樣做。 =)

1
$data=file_get_contents("file"); 
$data=preg_replace("/\n+|[[:blank:]]+/","",$data); 
print "number of tags: ". substr_count($data, '<');