【问题标题】:PHP simple html dom parser. Empty spanPHP 简单的 html dom 解析器。空跨度
【发布时间】:2012-06-12 17:36:39
【问题描述】:

我正在尝试使用以下代码解析网站。

<span id="ctl00_cphBody_resList_pnlResumes_rptResumes_ctl01_Label1" class="address">Somename, <nobr>Someage</nobr></span>

我是这样解析的

$fio=$text_specialty_next->find('span#ctl00_cphBody_resList_pnlResumes_rptResumes_ct'.$n.'_Label1');

但是当我尝试打印结果时,

echo $fio->innertext;

结果为空。什么会导致这个问题?

【问题讨论】:

  • 现在我的解决方案是这样的。如果 ($nfind('span[id=ctl00_cphBody_resList_pnlResumes_rptResumes_ctl'.$nstr.'_Label1]'); } else { $fio=$text_specialty_next->find('span[id=ctl00_cphBody_resList_pnlResumes_rptResumes_ctl'.$n.'_Label1]'); } 其中 $n=01,并且增加了。
  • 我已经修正了错误,并将 span#value 更改为 span[id=value],但它仍然不起作用。=(我现在该怎么办?

标签: php dom html-parsing


【解决方案1】:

find()

rptResumes_ct'.$n.'_Label1'

但应该是的

rptResumes_ctl'.$n.'_Label1'

你错过了一个“l”

$n 的值是多少?

【讨论】:

  • 哦,是“l”。我还以为是1,呵呵。 $n 它是一个变量,它有一个值,我可以替换它。然后我会尝试修复解决方案。
  • :)) 是的 $n 是一个变量。我的意思是,它的价值是什么,你如何使用它?
  • 值为01,循环增加。顺便问一下,是否可以使'01'值(不是'1')?
  • @SergeyScopin ,您可以在声明 $n 时使用 sprintf() 。像这样:$n = sprintf("%02d", 1); => $n = 01
【解决方案2】:

$n="l01" 是吗?你用的是什么解析器?在SimpleHTMLDom 中你需要使用find(span[id=...]);

【讨论】:

  • simpleHTMLDom Documentation 中说使用元素[attribute=value]。我假设您正在使用 simpleHTMLDom。您还需要按照@Eray 的说明检查搜索字符串。
【解决方案3】:

问题解决了。 $find->smth 返回数组,whick 当然没有内文。我必须使用 foreach(find->smth as $someelement) 来回显它。

【讨论】:

    猜你喜欢
    • 2017-03-29
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2016-07-30
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多