2016-05-14 7 views
1

divをクラス名で探したいのですが、クラス名全体がありません。単語を含むdivクラスを見つけよう

<div class="article_main"> 
Article 
</div> 

のdivを見つけるコード:たとえば

$html = file_get_contents($_POST['url']); 
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); 
$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 
$result = ''; 
foreach($xpath->evaluate('//div[@class="article"]/node()') as $childNode) { 
    $result .= $dom->saveHtml($childNode); 
} 

私はクラスが単語 "記事" が含まれているdiv要素を見つけるしたいと思います。助けてください。

答えて

0

あなたは、XPathでcontainsを使用することができます。

$xpath->evaluate('//div[contains(@class, "article")]/node()') 

テスト:

<?php 
$html = '<div class="article_main">Article</div>'; 
$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 
$result = ''; 
foreach($xpath->evaluate('//div[contains(@class, "article")]/node()') as $childNode) { 
    $result .= $dom->saveHtml($childNode); 
} 
echo $result; 

を出力:

Article 
+0

あなたは私の前に3分足らずで、おそらく彼が後にしたこともあります! –

0

このは、サーバー側で行われるを持っていますか?いいえ場合は、jQueryを使ってそれを行うことができ、それはどちらかだけである:

var results = $(div).filter(function(){ return $(this).hasClass('whatever'); /* whatever is class name here */ }); 

または

var results = $(div).filter(function(){ return $(this).text().indexOf("text to search for") !== -1 }); 

は、サーバー側の処理については、単にあなたのPHPコードにそれを送信するためにAJAXを使用し

関連する問題