2011-04-22 50 views
1

在此先感謝您滿足我的明顯PHP限制。使用PHP查找以「enddate-」開頭的所有元素?

考慮這個HTML:

<div class="story first enddate-2011-04-21"> 
    <h3>misc HTML content</h3> 
    ... 
</div> 

<div class="sparkly enddate-2014-01-01"> 
    <p>blah blah blah</p> 
    ... 
</div> 

我如何使用PHP來識別一個HTML文檔的所有元素與具有「enddate-」開頭的一類?

爲什麼我想知道:我想用PHP(BX它的服務器端)來查找所有這些元素,如上面兩個div的;然後抓取(並驗證)隱含的日期信息,並且如果今天的日期在結束日期之後,則導致該元素及其內部內容不被顯示在服務的網頁上(因此,在上面,刪除所有的證據現在第一個div,但第二個可見,直到2014年)。

我發現了一些建議here on stackoverflow有關使用PHP HTML解析器來找到與特定ID的元素,如:

$doc = new DOMDocument(); 
$doc->loadHTML($html); 
$element = $doc->getElementById('ithis'); 
$element->parentNode->removeChild($element); 
$html = $doc->saveHTML(); 

可以這樣進行修改,以尋找「開始與」結束日期' 」?

回答

2

我認爲你可以做到這一點使用XPath。

像這樣的東西應該工作:

$xpath = new DOMXPath($domdocument); 
$elements = $xpath->query("//*[contains(@class, 'enddate-')]"); 

(XPath查詢是未經測試)

+0

退房:W3Schools的(http://www.w3schools.com/Xpath/xpath_syntax.asp) 。看起來像'// * [@ class ='enddate - *']',但未經測試。 – 2011-04-22 20:43:29

+0

如果您直接使用屬性,它只會在類匹配您的模式時才起作用 - 因此它需要以enddate開頭 - 才能匹配。 contains函數可以用來檢查子字符串 – 2011-04-22 21:26:05

+0

非常感謝!我會玩。 – ErikJ 2011-04-25 22:10:43

相關問題