Simple HTML Dom Parser的数值作为文本处理

时间:2014-11-26 21:57:08

标签: php simple-html-dom

我正在使用PHP Simple HTML DOM Parser从网页中提取信息。我检索的值之一是数字。以下是我检索值的方法:

$num = $html->find('a[id=reviews_link] span');

然后,如果我想打印数字:

foreach($num as $val){
    echo $val;
}

此操作正常并从原始页面打印正确的数字。但是,如果我想在逻辑语句中使用该数字,则它不起作用。因此,例如,如果返回一个数字且其值为20,那么当我这样做时:

foreach($num as $val){
    if($val > 15){
        echo $val." is greater than 15";
    }
}

不会触发if语句,也不会打印任何内容。如果我在变量("$val")周围添加引号,也会发生同样的情况。我也尝试使用各种PHP函数,如intvalfloat,但这不会改变任何内容。

如何将此变量视为数值?

当我print_r($val)打印出超长simple_html_dom_node Object时,它似乎包含一堆数组。

2 个答案:

答案 0 :(得分:2)

$val实际上是simple_html_dom_node个对象,echo $val;仅适用于此类实现魔术__toString()方法。这只适用于某些情况,但在比较中特别

在这里你需要引用实际的对象属性,这里可能是

if ($val->outertext > 15)

if ($val->plaintext > 15)

另请参阅http://simplehtmldom.sourceforge.net/manual.htm#section_access

下的“魔术属性”标签

答案 1 :(得分:1)

因为$num是一个Dom对象数组,而每个$val都是一个dom对象,而不是一个数字。由于其__tostring()方法,它打印为数字,但不会将其转换为整数。

我相信这会奏效:

foreach($num as $val){
    if($val->value > 15){ // or $val->attributeName for whatever attribute contains the value
        echo $val." is greater than 15";
    }
}