2011-06-16 15 views
0

我要搜索一個目錄已.png格式extension.I'm通過捲曲做一個隨機文件,所以我的劇本是這樣的:使用PHP和正則表達式的捲曲

$url = "http://www.google.com/images/logos/".$b; 

,然後就做這樣的:

curl_setopt($ch, CURLOPT_URL, $url); 

的問題是,我不知道如何設置。我試過這種的$b價值 - $b="{%[a-zA-Z0-9_-]%}.'.png'";但顯然這是行不通的。

感謝

Leron

+0

Leron:正則表達式反過來,從一個條g,不要創建字符串。 – hakre 2011-06-16 16:13:36

+0

你的意思是說你想下載所有在Doodle上使用的GOOGLE圖片? – 2011-06-16 16:14:32

+0

不,我使用這個URL,因爲我在另一個關於cURL的問題中發現它。實際上,我只是想知道是否有某種方法可以通過這種方式獲取未知文件。並且如果最終做出一些循環並嘗試獲取所有的文件。就是這樣。 – Leron 2011-06-16 16:24:16

回答

0
$test = 'abcdefghijklmnopqrstuvwxyz....'; // put in all characters you want to test for 

for($i=0,$len=strlen($test); $i<$len; $i++) { 
    $b = $test[$i]; 
    $url = sprintf("hxxp://www.google.com/images/logos/%s.png", $b); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    ... 
} 

這個例子僅僅是一個字母。但是,如果您需要更多字母,則可能需要很長時間才能對所有文件進行測試。

比方說,23個possbile字符,長度爲

1: 23 urls 
2: 529 urls 
3: 12 167 urls 

因此,例如1-3個字母組成:12周719要測試的網址。只是爲了給你照片。

+0

我也覺得需要指出的是,如果您在緊縮環境中這樣做,那麼Google和http://www.google.com/robots的成本就會很高。txt不允許蜘蛛目錄。無論你如何看待它,它都是一個可憐的網民。 – 2011-06-16 16:24:04

+0

是的,這就是爲什麼我想到正則表達式,但顯然沒有辦法以其他方式使用它們。 – Leron 2011-06-16 16:27:04

+0

循環是一種解決方案,但我不認爲我會嘗試它,所有這一切都是因爲今天我開始學習cURL,並希望看到我能做什麼,不能做什麼。正如我上面提到的那樣,谷歌從其他一些用戶的例子,我只是爲了測試。 – Leron 2011-06-16 16:30:35

0

我有一個印象,你不完全明白如何工作正則表達式。那麼,首先你需要一個輸入來與正則表達式匹配。 例:

$input = "hello, 123"; //I just need the digits part 
$regex = @"\d+"; 
preg_match($regex, $input, $matched); 

\ d搜索按數字[0-9]上串,等同[0-9]或:

 for ($c = 0, $len = strlen($input); $c < $len; $c++) 
     { 
      $tmp = $input[$c]; 
      if ($tmp == '0' || $tmp == '1' || $tmp == '2' || 
       $tmp == '3' || $tmp == '4' || $tmp == '5' || 
       $tmp == '6'|| $tmp == '7' || $tmp == '8' || 
       $tmp == '9') 
      { 

       echo $tmp; 
      } 
     } 

,如果你想下載所有谷歌的圖像,同時檢查:

http://www.google.com/logos/ 網絡爬蟲用於提取鏈接在此頁面中的所有圖像:

<? 
Header('Content-Type:text/plain'); 
$domain = "http://www.google.com/logos/"; 
$ch = curl_init($domain); 
curl_setopt($ch ,CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 
preg_match_all("/<img\s+alt=\"(?<title>[^\"]+)\"\s+src=\"(?<url>[^\"]+)\"/", $response, $matched); 
print_r($matched); 
?> 

輸出:

[title] => Array 
     (
      [0] => Latest Google Logos 
      [1] => Les Paul's 96th Birthday 
      [2] => Dragon Boat Festival 
      [3] => Richard Scarry's 92nd Birthday 
      [4] => Republic Day 
      [5] => Birthday of Ibn Khaldun 
      [6] => Africa Day 
      [7] => Jordan Independence Day 
      [8] => Day of Slavonic Alphabet, Bulgarian Enlightenment and Culture 
      [9] => Emile Berliner's 160th Birthday 
      [10] => Doodle4Google US Winner 
      [11] => 100th Birthday of Annie M.G. Schmidt 
      [12] => Dame Nellie Melba's 150th Birthday 
      [13] => 120th Birthday of Mikhail Bulgakov 
      [14] => Paraguay's Independence Day 
      [15] => Martha Graham's 117th Birthday. Animated by Ryan Woodward, choreographed by Janet Eilber, and danced by Blakeley White-McGuire. 
//... 



[url] => Array 
     (
      [0] => /images/feed-icon.gif 
      [1] => /logos/2011/lespaul11-hp.png 
      [2] => /logos/2011/dragonboat11-hp.jpg 
      [3] => /logos/2011/scarry11-hp.png 
      [4] => /logos/2011/republicday11-hp.jpg 
      [5] => /logos/2011/ibn11-hp.jpg 
      [6] => /logos/2011/africaday11-hp.jpg 
      [7] => /logos/2011/jordan11-hp.png 
      [8] => /logos/2011/slavonic_alaphabet11-hp.jpg 
      [9] => /logos/2011/berliner11-hp.png 
      [10] => /logos/2011/d4g11-matteolopez-HP.png 
      [11] => /logos/2011/annieschmidt11-hp.jpg 
      [12] => /logos/2011/nelliemelba11-hp.jpg 
      [13] => /logos/2011/bulgakov11-hp.png 
      [14] => /logos/2011/paraguay11-hp.jpg 
      [15] => /logos/2011/graham11-hp.png 
//.... 

$urlToDownlaod = implode($domain, $matched["url"]); 
$urlToDownlaod = explode("\"", $urlToDownlaod); 
print_r($urlToDownlaod); 

現在,這裏已在google.com/logos 託管圖像的所有URL做出下載功能

簡單的例子:

function GetSrc($link) { 
$ch = curl_init($link); 
curl_setopt($ch ,CURLOPT_RETURNTRANSFER, true); 
return curl_exec($ch); 
} 

for($x = 0,$len = count($urlToDownlaod); $x < $len; $x++) { 
    $fp = fopen("images/".$matched["title"][$x], "w"); 
    fputs($fp, GetSrc($urlToDownlaod[$x]); 
    fclose($fp); 
    flush(); 
}