2017-12-12 31 views
1

URLからdivテキスト(学校)を取得したいと考えています。私はそれが仕事を得るcould't echo $second[0];外部のウェブサイトからdivテキストを取得する方法

その後、

1. file_get_htmlquery('//div[@class="list"]');

2. file_get_contents$first = explode('<div class="list">',$content);とと$second = explode("</div>" , $first[0]);、..:

<div id='listBox'> 
    <div class='list'> 
     <span class='listID'>01101602</span>school 
    </div> 
    <div class='department'></div> 
    <div class='nop'></div> 
</div> 

は、私はすでにいくつかの方法を試してみました。

+1

のようなエラー処理メソッドの一部をlibxmlのように使用する必要がありますか?PHPまたはJavaScriptで行いますか? – BNT

+1

これまでに試したことをあなたのコードに加えてください。また、さまざまなソリューションを試している間にエラーが発生しましたか?あなたはこのdivテキストを抽出したい場所からURLを使用して教えてください –

+1

そのコードを表示してください: 'file_get_htmlとquery( '// div [@ class =" list "]');' – splash58

答えて

0

汚い解決策ですが、 tedは有効なXML/HTMLではないため、通常のXML/HTMLパーサーでは解析できません。すべて/ほとんどすべてのHTMLパーサによってommitedされます

<div class='department'>/div> 

このテキスト(学校):

<?php 
$text = file_get_contents("http://page.com/file.htm"); 
$explode1 = explode('</span>', $text); 
$explode2 = explode('</div>', $explode1[1]); 
$schoolText = trim($explode2[0]); 

この部分は(div要素を開くために<を逃す)有効なHTMLではありません

<span class='listID'>01101602</span>school 
0

XpathでdomDocumentを使用しても問題ありません

$html = "<div id='listBox'> 
<div class='list'> 
    <span class='listID'>01101602</span>school 
    </div> 
    <div class='department'>/div> 
    <div class='nop'></div> 
</div>"; 

$dom = new domDocument(); 
$dom->loadHTML($html); 
$xpath = new domXpath($dom); 
// Get innerHTML of the div 
foreach($xpath->query('//div[@class="list"]')->item(0)->childNodes as $x) { 
    echo $dom->saveHTML($x); 
} 
// <span class="listID">01101602</span>school 
+0

ありがとう。 。 – Jedd

0

あなたは、リモートサイトあなたに見つかったHTMLの妥当性によっては

$dom=new DOMDocument; 
$dom->loadHTMLFile($url); 
$xp=new DOMXPath($dom); 
$query='//*[@id="listBox"]/div[@class="list"]/span[@class="listID"]'; 
$col=$xp->query($query); 
if(!empty($col) && $col->length > 0){ 
    foreach($col as $node)echo $node->nodeValue; 
} 

をするノードを見つけるために、DOMDocumentの新しいインスタンスに直接リモートページをロードし、XPathクエリを使用することができるはずです

/* try to prevent errors */ 
libxml_use_internal_errors(true); 
$dom=new DOMDocument; 
$dom->validateOnParse=false; 
$dom->standalone=true; 
$dom->strictErrorChecking=false; 
$dom->recover=true; 
$dom->formatOutput=false; 
$dom->loadHTMLFile($url); 
/* clear errors */ 
libxml_clear_errors(); 

$xp=new DOMXPath($dom); 
$query='//*[@id="listBox"]/div[@class="list"]/span[@class="listID"]'; 
$col=$xp->query($query); 
if(!empty($col) && $col->length > 0){ 
    foreach($col as $node)echo $node->nodeValue; 
} 
+0

これは正しく見えますが、出力またはエラーメッセージはありません。 – Jedd

関連する問題