0

こんにちは、私はこの DOMDocument の世界に非常に慣れていません。私はまだ DOMDocument での xpath クエリの使用を学習し、探しています。html は時々変更されるため、preg_match は良い考えではありません。.html ファイルから値を取得する必要があります。取得したい html の部分です。お役に立てれば幸いです..

 <?php  
    $doc = new DOMDocument();
    @$doc->loadHTML('<table cellspacing="0" cellpadding="0" align="center" class="results">
    <tr class="header" bgcolor="#0000FF">
    <td>
    </td>
    <td>Name/AKAs</td>
    <td>Age</td>
    <td>Location</td>
    <td>Possible Relatives</td>
    </tr>
    <tr>
    <td>1.</td>
        <td>
            <a class="LN" href=""><b>Iron, Man E</b></a>
        </td>
        <td align="center">54</td>
        <td>
            <a href="">Canada, AK</a><br />
            <a href="">California, AK</a><br />
        </td>
        <td>
        
        </td>
        <td>
            <a href="">View Details</a>
        </td>
    </tr>
              
    <tr><td>2.</td>
    <td>
    <a class="LN" href=""><b>Bat, Man E</b></a></td>
    <td align="center">26</td>
    <td>
    <a href="">Gotham, IA</a>
    <br /></td>
    <td>
    <a href=""> View Details</a></td></tr>
    </table>');
    $xpath = new DOMXPath($doc);
    $xquery = '//a[@class="LN"]';           
    $links = $xpath->query($xquery);   
    
    foreach ($links as $el) {
    echo strip_tags($doc->saveHTML($el)).'<br/>'; 
}

?>

次の値を取得するにはどうすればよいですか? のみを取得できますIron, Man EBat, Man E

Iron, Man E | 54 | Canada, AK;California, AK
Bat, Man E | 26 | Gotham, IA
4

2 に答える 2

2

私の回答は DomDocument Query に関するものではありませんが、問題を簡単に解決できます。

SIMPLEHTMLDOMという名前のライブラリがあります! あなたはそれで素晴らしいことをすることができます。

例 :

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');

// Find all images 
foreach($html->find('img') as $element) 
       echo $element->src . '<br>';

// Find all links 
foreach($html->find('a') as $element) 
       echo $element->href . '<br>';

完全なドキュメント (このライブラリの機能) はこちらです。

于 2013-09-06T10:52:30.033 に答える
0

これを試して、

$xquery = '//a'; // you will get all anchor tags now
$links = $xpath->query($xquery);   

foreach ($links as $el) {
   echo strip_tags($doc->saveHTML($el)).'<br/>'; 
}

に入るためにこれを試してくださいsingle line

$xpath = new DOMXPath($doc);
$xquery = '//tr[td[a]]';           
$links = $xpath->query($xquery);   
foreach ($links as $el) {
    echo strip_tags($doc->saveHTML($el)).'<br/>'; 
}
于 2013-09-06T10:48:28.310 に答える