2014-11-26 1 views
-1

PHP Simple HTML DOM Parser을 사용하여 웹 페이지에서 정보를 가져옵니다. 내가 검색 한 값 중 하나는 숫자입니다. 이 제대로 작동하고 원래 페이지에서 올바른 번호를 인쇄Simple HTML Dom Parser의 수치는 텍스트로 처리됩니다.

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

: 나는 번호를 인쇄하려면 다음

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

: 여기에 내가 값을 검색하는 방법입니다. 그러나 논리 문장에서 숫자를 사용하려면 작동하지 않습니다. 그래서 예를 들어이 반환 한 수이고 나는이 수행 할 때 그 값이 20 인 경우

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

문이 트리거되지 아무것도하지 않은 경우 인쇄. 변수 ("$val") 주위에 따옴표를 추가하면 마찬가지입니다. intval 또는 float과 같은 다양한 PHP 함수를 사용해 보았지만 아무 것도 변경되지 않습니다.

이 변수를 숫자 값으로 처리하려면 어떻게해야합니까?

내가 print_r($val)에 인쇄 할 때 수퍼 길이가 simple_html_dom_node Object이되면 많은 수의 배열이있는 것으로 보입니다.

+0

에서 또한 "매직 속성"탭 '작동하지 않습니다. 실제로'$ val'에서'intval'을 사용하고 있습니까? 왜냐하면 그것이 당신이해야하는 일이기 때문입니다. 'if (intval ($ val)> 15) {...' –

+0

네, if (intval ($ val)> 15)'할 때와 같은 결과입니다. 생각해 줘서 고마워. – Dan

답변

2

$val 실제로 simple_html_dom_node 객체이며,이 클래스는 마법 __toString() 방법을 구현으로 echo $val;에만 작동합니다. 그러나 특정 상황에서만 작동하지만 특히 이 아닙니다. 여기

여기, 실제 개체 속성을 참조 할 필요가 아마

if ($val->outertext > 15) 

또는

if ($val->plaintext > 15) 

참조하면 INTVAL`라고 http://simplehtmldom.sourceforge.net/manual.htm#section_access

+0

감사합니다! 'plaintext'는 효과가있었습니다 (그러나 낙타의 경우는 제거했습니다). – Dan

+1

사실, 가장 좋은 방법은'intval'을 포함하는 것 인 것 같습니다. 이렇게하면 효과가 있습니다 :'if (intval ($ val -> plaintext)> 15)' – Dan

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"; 
    } 
} 
+0

아니, PHP DOM 확장 있지만 http://simplehtmldom.sourceforge.net/ 사용하지 않으므로 여기에 작동하지 않습니다, 그래서 특성 이름이 다릅니다 ... –

+0

@HartmutHolzgraefe, 설명 된대로 특성 액세스를 참조했습니다. http://simplehtmldom.sourceforge.net/manual.htm#section_access – Jakar