bai_jimmy

导航

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;
}

 

posted on 2013-10-29 20:21  bai_jimmy  阅读(184)  评论(0编辑  收藏  举报