存档

文章标签 ‘PHP’

抽离CodeIgniter的图像处理类

2013年8月22日 没有评论

本文适用环境:没有使用CodeIgniter框架,但是想引入一个功能还算完善的图像处理类

CodeIgniter 的图像处理类可以使你完成以下的操作

  • 调整图像大小
  • 创建缩略图
  • 图像裁剪
  • 图像旋转
  • 添加图像水印
  • 首先定义一个常量,和两个函数,用于兼容CodeIgni[......]

    Read more

    分类: PHP 标签: , ,

    像注释HTML一样注释PHP代码

    2013年7月10日 没有评论

    我们的目标, 是要实现如下的语法(以php-5.4.17为基础)

    <?php
    echo "1.这里正常执行\n";
    <!--
    echo "像注释HTML一样注释PHP代码\n";
    echo "这行相当于在'/* */'体内\n";
    echo "不会被输出\n";
    -->                                                                                                                                              
    echo "2.这里正常执行\n";

    编辑Zend/zend_language_scanner.l

    // 这是PHP的多行注释源码
    <ST_IN_SCRIPTING>"/*"|"/**"{WHITESPACE} {
        int doc_com;
     
        if (yyleng > 2) {
            doc_com = 1;
            RESET_DOC_COMMENT();
        } else {
            doc_com = 0;
        }
     
        while (YYCURSOR < YYLIMIT) {
            if (*YYCURSOR++ == '*' && *YYCURSOR == '/') {
                break;
            }
        }
     
        if (YYCURSOR < YYLIMIT) {
            YYCURSOR++;
        } else {
            zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno));
        }
     
        yyleng = YYCURSOR - SCNG(yy_text);
        HANDLE_NEWLINES(yytext, yyleng);
     
        if (doc_com) {
            CG(doc_comment) = estrndup(yytext, yyleng);
            CG(doc_comment_len) = yyleng;
            return T_DOC_COMMENT;
        }
     
        return T_COMMENT;
    }

    在这基础上做[......]

    Read more

    分类: PHP源码 标签: ,

    快速设置PHP的开发目录

    2013年7月9日 1 条评论

    PHP的源码放在了git上边,任何人都可以重建他的工作环境。
    在项目开发时,我想能够在同一时间使用不同的PHP版本分支,如PHP5.3, PHP5.4,PHP5.5和PHP的稳定版本,我想快速地测试不同的PHP环境和配置运行的结果是怎么样的。如建立使用线程安全或调试模式打开或关闭。
    一个简单的方[......]

    Read more

    分类: PHP 标签:

    php使用过滤器filter_var轻松验证邮箱url和ip地址等

    2013年6月13日 没有评论

    以前使用php的时候还不知道有过滤器filter这玩意,那时候判断邮箱、url和ip地址格式是否符合都是用正则表达式。后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库过滤器filter来完成这些功能。
    对于filter_var这个函数,如果验证通过则会返回验证对象,否则返回false[......]

    Read more

    分类: PHP 标签: ,

    PHP游戏中的抽奖算法初探

    2013年5月23日 1 条评论

    本示例代码是一段经典的概率算法,$probability是一个预先设置的数组,假设数组为:array(10,20,30,40),
    开始是从1,100这个概率范围内筛选第一个数是否在他的出现概率范围之内,
    如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间,在本例当中就是减去100[......]

    Read more

    分类: JavaScript, PHP 标签: ,

    WebQQ hash加密算法PHP版

    2013年4月27日 4 条评论

    由于最近QQ垃圾信息群发严重,官方选择将WebQQ部分功能实现细节方面做了点手脚。其中获取好友的POST值多了一个hash参数。
    这个hash是在js里加密完成的。
    以下是js源码

    <script type="text/javascript">
    function getHash(b, i) {
        for (var a = i + "password error",
        s = "", 
        j = [];;) if (s.length <= a.length) {                                                                                                        
            if (s += b, s.length == a.length) break
        } else {
            s = s.slice(0, a.length);
            break
        }   
        for (var d = 0; d < s.length; d++) j[d] = s.charCodeAt(d) ^ a.charCodeAt(d);
        a = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
        s = ""; 
        for (d = 0; d < j.length; d++) s += a[j[d] >> 4 & 15],
        s += a[j[d] & 15];
        return s;
    }
    </script>

    转成PHP版本处理,源码如下

    e[......]

    Read more

    分类: JavaScript, PHP 标签: ,

    基于WebQQ3.0协议写一个QQ机器人

    2013年4月21日 12 条评论

    一个偶然的机会,在某群看到一个类似QQ机器人的玩意在骚动,问那哥们回答说是JAVA写的,原来QQ还能这样玩儿。于是乎,我也就开始骚动了。Let’s go

    1.WEBQQ3.0登陆协议

    进入WEBQQ, http://web.qq.com/
    通过工具分析,可以知道,用户在输入密码之前(也就是输入[......]

    Read more

    分类: PHP 标签: , ,

    PHP检查模块是否存在以及显示版本相关信息

    2013年4月19日 没有评论

    如果你需要检查给定的PHP模块/扩展是否存在,下面一行代码就能派上用场,不需要使用phpinfo()。
    检查现有的模块:

    $ php -m | grep xdebug | wc -l
    1

    检查不存在的模块:

    $ php -m | grep mongo | wc -l
    0

    [......]

    Read more

    分类: PHP 标签: ,

    PHP获取函数的所在模块

    2013年4月18日 没有评论

    查看PHP函数的源代码时非常有用

    #!/usr/bin/php
    <?php
    if (empty($argv[1])) exit("Must be defined in PHP function\n");
    $function_name = $argv[1];
    $extensions = get_loaded_extensions();
     
    foreach ($extensions as $m)
    {
    	$func = get_extension_funcs($m);
    	if( ! is_array($func)) continue;
    	if (in_array($name, $func))
    	{
    		printf("%s was defined in Module: %s\n", $name, $m);
    		exit;
    	}
    }
    echo "This function is not found.\n";
     
    /* End of file get_function.php */

    用法:./get_function.php function_name

    分类: PHP 标签: ,

    PHP pcntl_fork 多进程下载网页图片

    2013年4月17日 没有评论

    pcntl_fork — 在当前进程当前位置产生分支(子进程)。译注:fork是创建了一个子进程,父进程和子进程都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程号,而子进程得到的是0。

    e149e763812719b568c17b517d8adfb5024[......]

    Read more

    分类: PHP 标签: , ,