2010-07-02 6 views
1
<?php 
$url='http://edition.cnn.com/?fbid=4OofUbASN5k'; 

$var = fread_url($url);// function calling to get the page from curl 
$search = array('@<script[^>]*?>.*?</script>@si'); // Strip out javascript 
$var = preg_replace($search, "\n", html_entity_decode($var)); // Strip out javascript 

$linklabel = array(); 
$link = array(); 
$dom = new DOMDocument($var); 
@$dom->loadHTML($var); 
$xpath = new DOMXPath($dom);// Grab the DOM nodes 

foreach($xpath->find('a') as $element) { 
    array_push($linklabel, $element->innerText); 
    print $linklabel; 
    array_push($link, $element->href); 
    print $link.'<br>'; 
} 


function fread_url($url) { 
    if(function_exists("curl_init")) { 
     $ch = curl_init(); 
     $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; ". 
       "Windows NT 5.0)"; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
     curl_setopt($ch, CURLOPT_HTTPGET, 1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION , 1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION , 1); 
     curl_setopt($ch, CURLOPT_URL, $url); 

     curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
     $html = curl_exec($ch); 
//print $html;//printing the web page. 
     curl_close($ch); 
    } 
    else { 
     $hfile = fopen($url,"r"); 
     if($hfile) { 
      while(!feof($hfile)) { 
       $html.=fgets($hfile,1024); 
      } 
     } 
    } 
    return $html; 
} 

두 개의 개별 배열로 링크와 링크 레이블을 구분해야합니다. 몇 가지 포럼을 따라 코드를 작성했지만 오류가 발생했습니다. 코드에 사용 된 찾기 기능에 대해 모르겠다.줄 14, php curl dom에 오류가 있습니다.

+0

코드 서식을 수정하고 오류를 게시하십시오. –

답변

0

주로 존재하는 함수와 존재하지 않는 속성에 대한 참조를 호출하는 몇 가지 문제가있다. 올바른 버전 :

<?php 
$var = <<<EOD 
<html> 
<a href="sdfgs">sdfd</a> 
</html> 
EOD; 

$dom = new DOMDocument(); 
@$dom->loadHTML($var); 
$xpath = new DOMXPath($dom); 

foreach($xpath->query('//a') as $element) { 
    $linklabel[] = $element->textContent; 
    $link[] = $element->getAttribute("href"); 
} 
var_dump($linklabel); 
var_dump($link); 
+0

ur 도움을위한 thx, ... –

+0

그것은 나를 위해 완벽하게 잘 일했다. –