获取远程文件(图片等)
有三种方式
file_get_contents($url);
使用file_get_contents()函数获取文件,在用file_put_contents()函数把文件写到本地。使用curl
//获取到文件
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,60);
$file=curl_exec($ch);
curl_close($ch);
//写入本地
$fp=fopen($save_dir.$filename,'a');
fwrite($fp,$file);
fclose($fp);
3 . 使用ob_start()
//获取文件
ob_start(); //打开缓冲区
readfile($url);
$file=ob_get_contents();
ob_end_clean();
//写入本地
$fp=fopen($save_dir.$filename,'a');
fwrite($fp,$file);
fclose($fp);
多个进程写入同一个文件(加锁)
$fp = fopen("lock.txt","w+");
if(flock($fp,LOCK_EX)){
//获得写锁,写数据
fwrite($fp,"write something");
//解除锁定
flock($fp,LOCK_UN);
}else{
echo "file is locking";
}
fclose($fp);
跳转的方法
header('Location:http://www.baidu.com'); //立刻跳转
header('refresh:3;url=http://www.baidu.com'); //三秒后跳转
//php函数跳转缺点:执行前不能有输出
//meta跳转
echo "<meta http-equiv='refresh' content='5;url=http://www.baidu.com' >";
创建多级目录
function create_dir($path,$mode=0777){
if(is_dir($path)){
return true;
}else{
if(mkdir($path,$mode,true)){
return true;
}else{
return false;
}
}
}
无限极分类
function getCat($data,$pid=0,$level=0){
static $res;
foreach($data as $k=>$v){
if($v['pid']=$pid){
$v['level'] = $level;
$res[] = $v;
getCat($data,$v['id'],$level+1);
}
}
return $res;
}
取出url中的扩展名
function getExt($url){
$arr = parse_url($url); //解析url,返回数组
$file = basename($arr['path']); //取文件名部分
$ext = explode('.',$file);
return $ext[count($ext)-1];
}
function getExt($url){
$url = basename($url);
$pos1 = strpos($url,'.');
$pos2 = strpos($url,'?');
if(strstr($url,'?')){
return substr($url,$pos1+1,$pos2-$pos1-1);
}else{
return substr($url,$pos1+1);
}
}
读取文件夹下的所有子目录和子文件夹
function my_scandir($dir){
$files = array();
if(is_dir($dir)){
if($handle = opendir($dir)){
while(($file = readdir($handle)) != false){
if($file!='.' && $file!='..' ){
if(is_dir($dir.'/'.$file)){
$files[$file] = my_scandir($dir.'/'.$file);
}else{
$files[] = $dir.'/'.$file;
}
}
}
closedir($handle);
return $files;
}else{
return false;
}
}else{
return false;
}
}
待续……
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。