CURL kullanarak extern web sayfasından belirli bir div seçme

3 Cevap php

Merhaba Herkes nasıl bir web sayfasının içeriğinin belirli bir div seçmek için bana yardımcı olabilir.

En i web sayfasından id="wrapper_content" ile div almak istiyorum http://www.test.com/page3.php diyelim.

(Çalışmıyor): benim geçerli kod şöyle

//REG EXP.
$s_searchFor = '@^/.dont know what to put here..@ui';    

//CURL
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, 'http://www.test.com/page3.php');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
if(!preg_match($s_searchFor, $ch))
{
  $file_contents = curl_exec($ch);
}
curl_close($ch);

// display file
echo $file_contents;

Yani ben, belirli bir div ve nasıl unset web sayfasının geri kalanı $file_content sadece div içerdiğini yani bulmak için belgeli ifadeleri nasıl kullanabileceğinizi bilmek istiyorum.

3 Cevap

HTML isn't regular, yani regex kullanmak gerekir. Bunun yerine ben böyle Simple HTML DOM veya DOM gibi bir HTML Ayrıştırıcı tavsiye ederim

Basit HTML DOM kullanmak için gittiğini Eğer aşağıdaki gibi bir şey yapardı:

$html = str_get_html($file_contents);
$elem = $html->find('div[id=wrapper_content]', 0);

Kodunuzu regex kullanıldığında bile hala düzgün işe yaramaz. Eğer regex kullanmadan önce sayfanın içeriğini almak gerekiyor.

//wrong
if(!preg_match($s_searchFor, $ch)){
    $file_contents = curl_exec($ch);
}

//right
$file_contents = curl_exec($ch); //get the page contents
preg_match($s_searchFor, $file_contents, $matches); //match the element
$file_contents = $matches[0]; //set the file_contents var to the matched elements
include('simple_html_dom.php');
$html = str_get_html($file_contents);
$elem = $html->find('div[id=wrapper_content]', 0);

İndir simple_html_dom.php

Bizim hpricot kontrol, bu zarif seçme bölümleri sağlar

İlk belgeyi almak için curl kullanmak istiyorsunuz, o zaman ihtiyacınız bölümünü almak için hpricot kullanın