【问题标题】:Get specific output using php DOMElement and beginning of a value?使用 php DOMElement 和值的开头获取特定输出?
【发布时间】:2018-07-23 16:56:22
【问题描述】:

这是 HTML 代码:

<table>
  <tr>
    <td>value1</td>
    <td>value2</td>
    <td><a href="mailto:example@mail.com">mailto:example@mail.com</a></td>
  </tr>
</table>

还有,php:

$html = 'http://www.example.com'; // target path
$dom = new DOMDocument;

@$dom->loadHTML($html);

$links = $dom->getElementsByTagName('a');
foreach ($links as $link){

    $linkatt = $link->getAttribute('href');
    $linkval = substr($linkatt, 0, 5 );

    if($linkval == "mailto"){
        echo $link->nodeValue;
    }
}

试图通过查找起始“mailto”值来导出所有具有href 属性的子a 元素,但没有得到任何结果,所以不确定我的代码有什么问题......

我怎样才能完成它,导出以mailto开头的href属性的所有值...?

【问题讨论】:

  • tr 具有 no href 属性。 atd
  • $links = $dom-&gt;getElementsByTagName('td'); 这听起来已经不对了。 tds 不是链接。试试$links = $dom-&gt;getElementsByTagName('a');
  • 感谢@u_mulder,问题已编辑。
  • 现在:td 具有 no href 属性。 atd
  • substr($linkatt, 0, 5) 将采用 5 个符号。 mailto6.

标签: php html dom


【解决方案1】:

如果要从文件名/U​​RL 加载 HTML,则需要使用 DOMDocument::loadHTMLFile(),而不是 DOMDOcument::loadHTML()。后者需要一个 HTML 字符串,而不是文件名或 URL。

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 2011-04-18
    • 1970-01-01
    • 2015-05-23
    • 2015-09-16
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    相关资源
    最近更新 更多