【问题标题】:PHP Simple HTML DOM parser - parsing nested elementsPHP Simple HTML DOM parser - 解析嵌套元素
【发布时间】:2023-03-15 12:53:01
【问题描述】:

我一直在使用 PHP Simple HTML DOM Parser Manual 发现这里 http://simplehtmldom.sourceforge.net/manual.htm 并且我在一些测试中取得了成功,除了这个:

它有嵌套的表和跨度,我想用 mynum 类解析跨度的外部文本。

<?php

require_once 'simple_html_dom.php';

$url = 'http://relumastudio.com/test/target.html';
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21");
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);

$DEBUG = 1;

if($DEBUG){
    $html = new simple_html_dom();
    $html->load($url);
    echo $html->find('span[class=mynum]',0)->outertext; // I should get 123456
}else{
    echo $result;
}        
curl_close($ch);

我以为我只需拨打一次电话echo $html-&gt;find('span[class=mynum]',0)-&gt;outertext; 即可获得短信123456,但我做不到。

有什么想法吗?任何帮助是极大的赞赏。谢谢。

【问题讨论】:

  • 您应该发布带​​有您的问题的 html,而不是 curl 代码。

标签: php html simple-html-dom


【解决方案1】:

首先正确加载网址。然后在这种情况下使用-&gt;innertext

$url = 'http://relumastudio.com/test/target.html';
$html = file_get_html($url);
$num = $html->find('span.mynum', 0)->innertext;
echo $num;

【讨论】:

  • 对于我的简单示例,您的解决方案有效。但是如果我将 URL 链接更改为相同的结构,它就不再起作用了。实际上,我从要解析的 URL 中制作了一个简单的示例,该 URL 具有完全相同的结构,但经过了简化。想看看网址吗?
【解决方案2】:

你需要内文。

$html = new simple_html_dom();
$html->load_file($url);
echo $html->find('span[class=mynum]',0)->innertext;

外文返回&lt;span class="mynum"&gt;123456&lt;/span&gt;

【讨论】:

  • @MIvanlsten,我试过了,但它仍然返回 NULL。
  • 你确定你有那个跨度的 123456 吗?也许垃圾邮件是空的,所以显然没有返回结果......
  • @AresDraguna 是的。请检查此网址relumastudio.com/test/target.html
  • $html-&gt;find('span[class=mynum]',0)-&gt;innertext; 返回什么?
猜你喜欢
  • 1970-01-01
  • 2021-01-06
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多