最近博客需要这么个功能,最初是想用file_exists()来判断本地文件的,奈何地址那里我填的是“http://zezeshe.com/usr/themes/Themia/img/sj/85.jpg”这货,因为我的错误填写,让我以为是主机的毛病,于是改用
fopen()方法,这个在我的韩国主机上没有问题,可我博客在的香港主机却死活不好使,问了客服说是@ 这个符号会消灭所有返回,建议我用CURL 方法,还没等我开始用,客服又说了:你不会是想判断本地文件吧? 我的回答当然是肯定的了。客服又说用file_exists()方法即可,然后我就把我错误的写法发了过去,质疑,然后客服就告诉了我问题所在。
最为一个{小 白|da bai},我要勇于记住这个错误,所以写这么一篇文章,也许也能帮助到同样小白的你。
对于本地服务器文件
<?php
$url = 'usr/themes/Themia/img/sj/85.jpg';
if( file_exists($url) )
{
echo '存在';
}
else
{
echo '不存在';
}
?>
对于远程文件的判断
fopen()方法:
<?php
$url = 'http://zezeshe.com/test.jpg';
if( @fopen( $url, 'r' ) )
{
echo '存在';
}
else
{
echo '不存在';
}
?>
CURL 方法:
<?php
$url2 = 'http://www.zezeshe.com/test.jpg';
$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents = curl_exec($ch);
//echo $contents;
if (preg_match("/404/", $contents)){
echo '文件不存在';
}
?>
版权属于:泽泽社长
本文链接:https://blog.zezeshe.com/archives/php-to-determine-whether-the-file-exists.html
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
才了你的坑@(笑尿),对于博客来说基本上调用并不频繁,采用file_exits函数即可,完美型人格的技术控建议使用is_file函数,不过还是感谢博主此篇文章
curl有点占资源。╮( ̄▽ ̄)╭
我实际就需要的判断本地文件!下边那个顺便记录下╮( ̄▽ ̄)╭
我是指远程文件,本地我也是用file_exists,远程用fopen或file_get_contents
我是用file_exists的
对于自己博客的图片可以转成本地判断,毕竟网络连接耗时多一点
$file = str_replace($this->options->siteUrl,\"\",$file);
if (strpos($file,\"http://\")!=false) {
//curl的方法或fopen
}else{
//file_exist()
}
嗯嗯,我只是判断下本地内置的缩略图存在与否,用稳重的第一个就好了 (ノ≧∇≦)ノ
我以前一直这样写的2333
@ $file = fopen(\"$url\",\"rb\");
感觉都差不多的样子~
哪种写法比较好呢