解析php中的DOM(比如在jQuery中)

Kir*_*ski 2 php jquery parsing dom

可能重复:
如何使用PHP解析HTML?

我需要在td标记内解析一个字符串.我可以使用jQuery执行此操作,具体如下:

$("#right .olddata:first td.numeric:first").html()
Run Code Online (Sandbox Code Playgroud)

如果我在字符串变量中有HTML代码,我如何获得相同td的内容?

bej*_*bee 5

简单的HTML DOM

简单的HTML Dom提供了一种面向对象的方式来访问php中的html dom.我之前使用过很多次成功,但它会在大型dom结构上窒息.一个很好的功能是能够操纵dom并使用这个oo设计保存它.它允许您执行dom的选择器搜索:

// Find all <div> which attribute id=foo
$ret = $html->find('div[id=foo]'); 
Run Code Online (Sandbox Code Playgroud)

要么:

// Find all <li> in <ul> 
foreach($html->find('ul') as $ul) 
{
       foreach($ul->find('li') as $li) 
       {
             // do something...
       }
}

// Find first <li> in first <ul> 
$e = $html->find('ul', 0)->find('li', 0);
Run Code Online (Sandbox Code Playgroud)

它允许遍历:

echo $html->getElementById("div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');
Run Code Online (Sandbox Code Playgroud)

DOM文档

正如其他人所说,您也可以使用DOMDocument.

XPath的

根据我的个人经验,虽然xpath更难以开始工作,但如果您只对从dom中提取信息感兴趣,这是值得的.

虽然与您尝试提取的信息不完全相关,但这里是我如何使用xpath从xml文档中提取信息:

XML:

<?xml version="1.0" encoding="utf-8"?>
<Report>
  <CampaignPerformanceReportColumns>
    <Column name="AccountName" />
    ...
    <Column name="CampaignId" />
  </CampaignPerformanceReportColumns>
  <Table>
    <Row>
      <CampaignName value="Auctions" />
      <GregorianDate value="8/11/2010" />
      ...
      <CampaignId value="60312546" />
    </Row>
    <Row>
      <CampaignName value="Auctions" />
      <GregorianDate value="8/11/2010" />
      ...
      <CampaignId value="60312546" />
    </Row>
    <Row>
      <CampaignName value="Auctions 2" />
      <GregorianDate value="8/11/2010" />
      ...
      <CampaignId value="603125467" />
    </Row>
  </Table>
</Report>
Run Code Online (Sandbox Code Playgroud)

PHP:

$xml = simplexml_load_file($file);

// Get each Row
$result = $xml->xpath("Table/Row");

// Get the CampaignId of each Row
$result = $xml->xpath("//Row/CampaignId");
Run Code Online (Sandbox Code Playgroud)

XPath还有更多功能; 如果您需要从任何xml结构化文档中提取大量信息,我建议您继续探索它.