我写了这样的PHP代码

$site="http://www.google.com";
$content = file_get_content($site);
echo $content;

但是当我从$site中删除“http://”时,我得到以下警告:

警告: file_get_contents (www.google.com) (函数。file-get-contents]:失败 打开水流:

我试过,试过,但没成功。


当前回答

您可以使用这个脚本

$url = @file_get_contents("http://www.itreb.info");
if ($url) {
    // if url is true execute this 
    echo $url;
} else {
    // if not exceute this 
    echo "connection error";
}

其他回答

您可以使用这个脚本

$url = @file_get_contents("http://www.itreb.info");
if ($url) {
    // if url is true execute this 
    echo $url;
} else {
    // if not exceute this 
    echo "connection error";
}

你可以在前面加上@: $content = @file_get_contents($site);

这将抑制任何警告-谨慎使用!参见错误控制操作符

编辑:当你删除“http://'”时,你不再寻找一个网页,而是在你的磁盘上一个名为“www.google.....”的文件。

function custom_file_get_contents($url) {
    return file_get_contents(
        $url,
        false,
        stream_context_create(
            array(
                'http' => array(
                    'ignore_errors' => true
                )
            )
        )
    );
}

$content=FALSE;

if($content=custom_file_get_contents($url)) {
    //play with the result
} else {
    //handle the error
}

在使用file_get_contents()之前,应该使用file_exists()函数。 这样可以避免php警告。

$file = "path/to/file";

if(file_exists($file)){
  $content = file_get_contents($file);
}

您还可以将错误处理程序设置为调用Exception的匿名函数,并对该异常使用try / catch。

set_error_handler(
    function ($severity, $message, $file, $line) {
        throw new ErrorException($message, $severity, $severity, $file, $line);
    }
);

try {
    file_get_contents('www.google.com');
}
catch (Exception $e) {
    echo $e->getMessage();
}

restore_error_handler();

似乎有很多代码来捕捉一个小错误,但如果你在整个应用程序中使用异常,你只需要这样做一次,在顶部的方式(在包含的配置文件中,例如),它会将你所有的错误转换为异常。