使用fopen两次

时间:2012-03-26 01:01:22

标签: php fopen

我想使用open

打开2个网址
$url = 'http://xtreme-jumps.eu/demos.txt';
$url2 = 'http://cosy-climbing.net/demoz.txt';

这样的东西......但它不起作用

$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);
}

由于

4 个答案:

答案 0 :(得分:2)

您无法连接句柄。如果您想要实际的文件内容,则需要使用fread()(或仅file_get_contents())。

答案 1 :(得分:1)

嗯,不,这不起作用,因为handle是一个资源,而不是您尝试打开的网页的内容

如果您想一起加入内容,您需要打开第一个网址,获取内容,打开第二个网址并获取内容,然后加入内容。

如果您在第一次操作中完成所有操作,则可以重复使用handle进行第二次打开,但是您不能同时将一个句柄连接到两个URL。你当然不能通过尝试连接它们来做到这一点。

如果要同时访问这两个URL,只需使用两个不同的资源句柄。

答案 2 :(得分:1)

您可以尝试这样的事情:

$handles=array();

$handles[]=@fopen($url, "r");
$handles[]=@fopen($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){
    $handle=@fopen($url, "r");
    while (!feof($handle))
    {
        $buffer = fgets($handle);
        if(strpos($buffer, $map) !== FALSE)
            $matches[] = $buffer;
    }
    fclose($handle);

}

答案 3 :(得分:0)

也许您想要file_get_contents()fopen返回一个资源句柄,稍后您可以使用它来读取(或写入)。