我正在使用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函数,如intval
或float
,但这不会改变任何内容。
如何将此变量视为数值?
当我print_r($val)
打印出超长simple_html_dom_node Object
时,它似乎包含一堆数组。
答案 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";
}
}