【问题标题】:Retrieving a line of HTML from a document using DOM in PHP [duplicate]在PHP中使用DOM从文档中检索一行HTML [重复]
【发布时间】:2012-09-28 01:28:22
【问题描述】:

可能重复:
Grabbing the href attribute of an A element

我目前正在尝试解析网页中的特定元素,该元素将采用以下格式:

<div id="main-id">
    <div id="sub-id-1" onclick="some onclick"> 
    <span class="big-class" style="some style">
    </span>
    <div id="sub-id-2">&#160;</div>
</div>

我试图从中提取的主要部分是整个&lt;span class="big-class" style="some style"&gt; 标签,因为我需要从元素中提取样式并将其存储到字符串中。为此,我尝试使用以下代码:

$dom = new DOMDocument();
$dom->validateOnParse = true;
$dom->loadHTML($html);

$belement = $dom->getElementById("main-id");
echo $belement->nodeValue;

但是,这只是返回字符Â,这就是字符代码&amp;#160 的用途。

我不确定要搜索什么才能完成此操作,我什至不确定是否使用 DOM 拉取整个 HTML 行(?)。有什么办法可以使用 DOM 来返回这个 span 元素?

【问题讨论】:

标签: php dom


【解决方案1】:

nodeValue 将返回标签的 innerHTML。因此,在这种情况下,它正确地返回 Â。您可以查看PHP Xpath : get all href values that contain needle 进行类似讨论。你可以这样做:

$html = <<< HTML
<div id="main-id">
    <div id="sub-id-1" onclick="some onclick"> 
    <span class="big-class" style="some style">
    </span>
    <div id="sub-id-2">&#160;</div>
</div>
HTML;

$xml  = simplexml_load_string($html);
$span_elem = $xml->xpath('//span[@class="big-class"]');

【讨论】:

  • 我不知道如何合并它,因为我已经有$dom-&gt;loadHTML($html),你能给我举个例子吗?
  • 虽然您正确解释了原因,但解决方案是错误的。
  • @Gordon 是的,解决方案不正确。我正在更新我的答案...:D
  • 谢谢你 rizwaniqbal,但是,我仍然遇到了一些问题。当我尝试输出我用$xml-&gt;xpath 抓取的字符串时,我只得到Array 的文本,而使用print_r($span_elem);,给了我Array ( )。我是否遗漏了一些关于将其存储到字符串中的明显内容?谢谢。
猜你喜欢
  • 2011-12-22
  • 2011-06-26
  • 2017-12-18
  • 2013-05-21
  • 2011-11-18
  • 2014-08-19
  • 2011-10-27
  • 1970-01-01
相关资源
最近更新 更多