2010-07-04 2 views
1

작업, 프록시 웹 사이트를 통해 수정하면 모든 링크 라벨이 변경되지는 않습니다 코드PHP 컬, 링크 라벨이없는 완전히 여기

<?php 
$url='http://isrc.ulster.ac.uk'; 
$var = fread_url($url);// function calling to get the page from curl 
$i=0; 
$linklabel = array(); 
$linklabelmod = array(); 
$link = array(); 
$dom = new DOMDocument(); 
@$dom->loadHTML($var); 
$xpath = new DOMXPath($dom); 

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

for($k=0;$k<$i;$k++) { 
    $linklabelmod[$k] = str_replace($linklabel[$k], $linklabel[$k]."[$k]", $linklabel[$k]); 
    $var = preg_replace("/\\Q$linklabel[$k]\\E/", $linklabelmod[$k], $var, 1);//modifying link labels 
} 
print $var; 
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;//will printing the web page . 
     curl_close($ch); 
    } 
    else{ 
     $hfile = fopen($url,"r"); 
     if($hfile){ 
      while(!feof($hfile)){ 
       $html.=fgets($hfile,1024); 
      } 
     } 
    } 
    return $html; 
} 
?> 

입니다. 고유 번호를 첨부하여 각 링크 레이블을 수정하고 싶습니다. 당신이 오류를 볼 수 있도록 코드를 실행하십시오. Thx 미리 ..

+0

오류에 대해 알려 주시면 어떻습니까? –

+0

모든 링크 레이블이 수정되지 않습니다. 일부는 완벽하게 작동합니다. "bbc.com"으로 URL을 변경하면 경고로 표시됩니다. preg_replace() [function.preg-replace] : C : \ wamp \ www \ test \ f.php의 알 수없는 수정 자 '0' on line 20 –

+0

Somebody plz help me ....... –

답변

0

대체하기 전에 일치하는 항목이 있는지 확인하는 것은 어떻습니까? preg_match을 사용하십시오.

이 질문을 통해 귀하의 질문을 망칠 의도는 없지만 누군가가 대답을하면 어떻게 대답합니까? 내 의견에 '덧글 추가'만 표시됩니다. 감사합니다.

+0

하지만 멍청한데, 특정 preg_match 표현을 함축하는 것에 대해서는 몰라? plz help with the example .... –

+0

preg_replace 호출 위의'if (preg_match ("/ \ Q $ linklabel [$ k] \\ E /", $ var))'가 가장 가능성이 높습니다. EDIT : 실제 regexp 구문에 대해 불평하지 않는 한. 그렇다면, "/". linkLabel [$ k]./i"와 비슷한 것을 시도해보십시오. – eklundchristopher

+0

아니요, 작동하지 않습니다. 여기에 실제 코드가 있습니다 ... $ dom = new DOMDocument(); @ $ dom-> loadHTML ($ var); $ xpath = 새 DOMXPath ($ dom); foreach ($ xpath-> query ('// a') $ element) { $ linklabel [] = $ element-> textContent; $ link [] = $ element-> getAttribute ("href"); \t $ i = $ i + 1; \t $ linklabelmod [$ k] = str_replace ($ linklabel [$ k], $ linklabel [$ k]. "[$ k ($ k) ] ", $ linklabel [$ k]); \t if (preg_match ("/ \\ Q $ linklabel [$ k] \\ E /", $ var)) \t $ var = preg_replace ("/ \\ Q $ linklabel [$ k] \\ E/, $ linklabelmod [$ k], $ var, 1); } 인쇄 $ var; // 웹 페이지 인쇄 –