2012-03-26 58 views
0

我想使用開放使用FOPEN兩次

$url = 'http://xtreme-jumps.eu/demos.txt'; 
$url2 = 'http://cosy-climbing.net/demoz.txt'; 

像這樣開2網址的...但它不工作

$handle = @fopen($url, "r"); 
$handle .= @fopen($url2, "r"); 

我要加入他們的行列,因爲我會稍後搜索有

if ($handle) 
{ 
    while (!feof($handle)) 
    { 
     $buffer = fgets($handle); 
     if(strpos($buffer, $map) !== FALSE) 
      $matches[] = $buffer; 
    } 
    fclose($handle); 
} 

感謝

+0

你說的「不工作」,爲什麼不直接使用兩個把手是什麼意思? – j08691 2012-03-26 01:03:56

+0

@ j08691我已經添加了一段代碼,爲什麼我需要加入他們 – Zuker 2012-03-26 01:09:45

回答

1

你可以嘗試這樣的事:

$handles=array(); 

$handles[][email protected]($url, "r"); 
$handles[][email protected]($url2, "r"); 

foreach($handles as $handle){ 
    while (!feof($handle)) 
    { 
     $buffer = fgets($handle); 
     if(strpos($buffer, $map) !== FALSE) 
      $matches[] = $buffer; 
    } 
    fclose($handle); 

} 

或更好:

$urls=array(
    'http://xtreme-jumps.eu/demos.txt', 
    'http://cosy-climbing.net/demoz.txt' 
); 


foreach($urls as $url){ 
    [email protected]($url, "r"); 
    while (!feof($handle)) 
    { 
     $buffer = fgets($handle); 
     if(strpos($buffer, $map) !== FALSE) 
      $matches[] = $buffer; 
    } 
    fclose($handle); 

} 
1

那麼,不,這不會工作,因爲handle是您嘗試打開的網頁的資源,而不是內容

如果你想加入內容在一起,你需要打開第一個URL,獲取內容,打開第二和獲取內容,然後再加入的內容。

如果您完成了第一次打開的所有操作,但您無法同時連接兩個URL,則可以重新使用handle進行第二次打開。你當然不能通過試圖連接它們來做到這一點。

如果要同時訪問這兩個URL,只需使用兩個不同的資源句柄即可。

2

不能連接手柄。如果你想要實際的文件內容,你需要使用fread()(或者只是file_get_contents())。

0

也許你想用file_get_contents()代替? fopen返回一個資源句柄,您稍後將使用該句柄來讀取(或寫入)。