资讯专栏INFORMATION COLUMN

[笔记] php常见简单功能及函数

Salamander / 364人阅读

摘要:获取远程文件图片等有三种方式使用函数获取文件,在用函数把文件写到本地。

获取远程文件(图片等)

有三种方式

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 "";
创建多级目录
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;
    }
}

待续……

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23090.html

相关文章

  • php资料集

    摘要:简单字符串缓存实战完整实战种设计模式设计模式是面向对象的最佳实践成为专业程序员路上用到的各种优秀资料神器及框架成为一名专业程序员的道路上,需要坚持练习学习与积累,技术方面既要有一定的广度,更要有自己的深度。 微型新闻系统的开发(PHP 5.4 + MySQL 5.5) 微型新闻系统的开发(PHP 5.4 + MySQL 5.5) 九个很有用的 PHP 代码 php 代码 国内值得关注的...

    RobinQu 评论0 收藏0
  • PHP小知识点

    摘要:那些琐碎的知识点作者记录的的很奇特很难记的知识点。易错知识点整理注意和的区别中和都是输出的作用,但是两者之间还是有细微的差别。今天手头不忙,总结一下,分享过程中掌握的知识点。 深入理解 PHP 之:Nginx 与 FPM 的工作机制 这篇文章从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理,让我们真正理解 Nginx 与 PHP 是如何协同工作的。 PHP 那些琐碎的知识...

    hover_lew 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<