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 E, 和 Bat, Man E

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

2 回答 2

2

我的答案不是关于 DomDocument 查询,而是可以轻松解决您的问题。

有一个名为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 回答