2011-04-22 7 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> 

は、どのように私は「enddate-」で始まるクラスにHTMLドキュメント内のすべての要素を識別するためにPHPを使用することができますか?

私が知りたいのはなぜですか:上記の両方のdivのように、このような要素をすべて見つけるにはPHP(bxはサーバー側)を使用します。暗黙の日付情報を取得(および検証)し、今日の日付が終了日の後にある場合は、その要素とその内容を表示されたWebページに表示しないようにしてください(上記では、今すぐ最初にdivを作成し、2014年まで2番目のdivを残してください)。

私はのように、特定のIDを持つ要素を見つけるためにPHP HTMLパーサを使用する方法についていくつかのアドバイスhere on stackoverflowが見つかりました:

$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 - * '] 'のように見えますが、それはテストされていません。 –

+0

あなたが提案するように属性を直接使用すると、クラスがパターンと一致するときにのみ属性が働くので、一致させるためにはenddateで始める必要があります。 contains関数を使用して部分文字列をチェックすることができます –

+0

ありがとうございました!私はそれで遊ぶだろう。 – ErikJ

関連する問題