zoukankan      html  css  js  c++  java
  • php碎片

      1.flock

      LOCK_EX 独占锁定 

      LOCK_SH 共享锁定

      LOCK_UN 解除锁定

      LOCK_NB 锁定但不堵塞进程,直接返回false

      2. fseek

       SEEK_CUR

       SEEK_END

         SEEK_SET

     3、

    function search($key,&$result){
    	$result=$key.'此种方法值得学习';
    	return true;
    }
    
    if(search('123',$result)){
    	echo $result;
    }
    /*
     * ① md5_file()要比get_headers()快很多
     * ② global和$GLOBALS只能使用,但并不会改变原来的赋值
     * ③ 递归思想的用处
     * ④ register_shutdown_function()来模拟析构函数
     * ⑤ set_error_handler() set_exception_handler() 接管的函数或者类都要加载错误出现之前
     * ⑥ ini_set('display_errors','Off')的权限要大于error_reporting();
     * ⑦ 代码技巧:先定义返回结果的格式,失败直接返回
     * ⑧ sprintf: %u=>无符号十进制 
                   %b=>二进制 
                   %d=>有符号的十进制整数 
                   %f=>浮点数 
                   %s=>字符串 
                   %x=>小写字母的十六进制
                   %X=>大写字母的十六进制
             原理就是如何认为计算机里边的二进制数了,会把参数当作十进制
     *        1)正负号,正号不用写,当不满足最小宽度的时候,从前边补0还是从后边补0
     *        2)填充字元 0表示空格填充0 默认值是空格,表示空格就放着
     *        3)总宽度(包括小数点),为最小宽度
     *        4)(.)精确度
     *         随心所欲的调用参数 “%1$.2f  %1$f”(%1$u 第一个参数,无符号十进制正数)
     * ⑨ ip2long()不要忘了使用%u
     * ⑩ substr_count($string,$serach[,$start,$length]) 检测一个字符串在另一个字符串中出现的次数
     * 11) 用isset来替换array_key_exists
     *       为初始化的变量、0、空、null、空数组、false、[没有任何属性的object]都为empty
     *     重点 var = null 跟empty唯一不同的就是当变量为定义时,会抛出一个Notice
     * 12) 如果php.int中的register_globals=On的话,所有的$_GET $_POST $_COOKIE $_SESSION 都将别注册成全局变量,通过$GLOBALS中,不建议开启
     * 13) get_magic_quotes_runtime() 和 get_magic_quotes_gpc()
     * 14) final关键字:如果类声明为final,则此类不允许继承,如果类中的方法声明为final,则此方法不允许覆盖
     * 15) Exception 
     *       class Exception{
     *            protected $message;
     *             protected $code=0;
     *            protected $file;
     *            protected $line;
     *
     *            public function __construct($message=null,$code=0);
     *            final function getMessage();
     *            final function getFile();
     *            final function getLine();
     *            final function getCode();
     *            final function getTrace();
     *            final function getTraceAsArray();
     *
     *            public function __toString();
     *       }
     * 16) 静态变量只存在函数作用域内,也就是说,静态变量只存活在栈中,一般的函数内部变量在函数结束后就会释放,比如局部变量,但是
     *     静态变量不会,也就是说下次在调用的时候,这个变量会保存起来
     *     静态属性不属于那个实例,对任何实例都有效
     *
     * 17) htmlspecialchars($string[,ENT_COMPAT|ENT_QUOTES|ENTNOQUOTES])    【这些都是针对单双引号的】
     *        ENT_COMPAT 尽编码双引号
     *        ENT_QUOTES 编码单双引号
     *         ENT_NOQUOTES 都不编码
     *
     * 18) pathinfo($fine[,option]) 返回文件路径信息
     *             PATHINFO_DIRNAME
     *            PATHINFO_BASENAME
     *            PATHINFO_EXTENSION
     *
     *    19) mb_strlen($str[,$encode]);        最好把encode加上
     *
     *  20) strtr($str,from,to) 或者 strtr($str,$array); 可以做个小的关键词库
     *
     *  21) explode('_',$str.2) 规定数组的最大长度
     *
     *  22) call_user_func_array(array('classname','method'),array('参数一','参数二',...)) 
     *      classname 
     *            可以为类名,此时就不再调用初始化函数
     *             可以为类的实例化,$test=new test(); array(&$test,methodName),调用初始化函数
     *        参数数组是一个索引数组,不会去按关联数组去匹配,不要太天真哦~~~
     *
     *    23)正则 (?=exp) 顺序肯定 (?<=exp) 逆序肯定 (?!exp) 顺序否定 (?<!exp) 逆序否定
     *            匹配ABBABB的正则 [d]+  ((?<n1>d)(?<n2>[^k<n1>])k<n2>)1 (如何不用分组名去捕获,我还是没写出来)
     */

     4、

    <?php
    /*    class Exception{
            protected $message;
            protected $code;
            protected $file;
            protected $line;
    
            function __construct($message[,$code]);
            final function getMessage();
            final function getCode();
            final function getFile();
            final function getLine();
            final function getTrace();
            final function getTraceAsArray();
            public function __toString();
            final private __clone();
        }*/
        // PDO 中包括三个预定义的类
            // ① PDO
                    // exec($sql)
                    // query($sql)
                    // setAttribute(PDO::ERRMODE,PDO::ERRMODE_EXCEPTION);
                    // lastInsertId()
                    // prepare()
                    // beginTransaction()
                    // commit()
                    // rollBack()
            // ② PDOStatment
                    // rowCount()
                    // fetch(PDO::FETCH_ASSOC|PDO::FETCH_BOTH|PDO::OBJ|PDO::NUM)
                    // fetchAll()
                    // bindParam()
                    // execute()
    
            // ③ PDOException
        try{
            $dsn='mysql:host=localhost;dbname=test';
            $pdo=new PDO($dsn,'root','');
            $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            // $sql='insert article values("",1,2)';
            // 执行一条sql,并返回影响的行数
            // echo $pdo->exec('SET NAMES UTF8');
            // query()执行一个sql,并返回结果集
            // $query=$pdo->query($sql);
            // rowCount() 返回sql执行后影响的行数
            // $affected_rows=$query->rowCount();
            // echo $last_id=$pdo->lastInsertId();
            // $query=$pdo->query('select * from friends LIMIT 10');
            // $result=$query->fetchAll(PDO::FETCH_ASSOC);
            // print_r($result);
            // $insert=$pdo->prepare('insert into article values("",?,?)');
            // $insert->execute(array(1,2));
            $sth=$pdo->prepare('select * from article where id=?');
            $id=20;
            $sth->bindParam(1,$id);
            $sth->execute();
            $result=$sth->fetch(PDO::FETCH_ASSOC);
            print_r($result);
        }catch(PDOException $e){
            echo $e->getMessage();
        }
    ?>

    5、 

    为所有的连接加上target='_blank'

    function contentTargetChange($content){
        $pattern='/<[a|A][^>]*>/';
        $count=preg_match_all($pattern,$content,$matches);
        if($count>0){
            try{
                $str='';
                $arr=preg_split($pattern, $content);
                foreach($matches[1] as $key=>$value){
                    $value=preg_replace('/target=[^>|^ ]*/i','',$value);
                    $str.=$arr[$key].substr($value,0,-1).' target="_blank">';
                }
                if(count($arr)>$count){
                    $str.=array_pop($arr);
                }
                return $str;
            }catch(Exception $e){
                return $content;
            }
        }
        return $content;
    }

     6)、

    function dec2f($num){
        $base='0123456789abcdef';
        $result='';
        do{
            $result=$base[$num%16].$result;
            $num=intval($num/16);
        }while($num!=0);
        return $result;
    }
    
    function f2dec($num){
        $map=array('0' => 0,
                '1' => 1,
                '2' => 2,
                '3' => 3,
                '4' => 4,
                '5' => 5,
                '6' => 6,
                '7' => 7,
                '8' => 8,
                '9' => 9,
                'a' => 10,
                'b' => 11,
                'c' => 12,
                'd' => 13,
                'e' => 14,
                'f' => 15);
        $len=strlen($num);
        $result='';
        for ($i=0; $i < $len; $i++) { 
            $result*=16;
            $result=$result+$map[$num[$i]];
        }
        return $result;
    }
  • 相关阅读:
    虚函数
    类的继承
    析构
    构造
    枚举类型
    c++中的静态类型 static
    c++中的类
    sizeof和strlen的区别
    剑指36 二叉搜索书与双向链表
    剑指35 复杂链表的复制
  • 原文地址:https://www.cnblogs.com/bai-jimmy/p/3395057.html
Copyright © 2011-2022 走看看