yjiang's cake

pecl安装指定版本的扩展

以couchbase为例

  • 访问 https://pecl.php.net/package/couchbase
  • 复制指定版本的包信息 https://pecl.php.net/get/couchbase-1.2.2.tgz
  • pecl install https://pecl.php.net/get/couchbase-1.2.2.tgz

5B896C7B-04F7-47D0-90FF-654CAC8677EF.png

解决在OSX10.11下无法安装php-pear问题

在最新的osx10.11下安装php-pear提示无权限,即使使用sudo来运行也是如此

问题所在

在最新的10.11版本下,osx引入了 Rootless机制.关于此机制可参考Quora用户Eldad Eilam的答案

简单来说就是苹果为了安全,限制第三方应用(包括brew),只有Apple以及Apple授权签名的软件(包括命令行工具)可以修改此目录。

关闭rootless

重启,开机按住Command + R,以Recovery分区启动, 然后选择以下方式: 1.图形化操作

在Security Configuration中关闭Enforce System Integrity Protection 

2.命令行操作

csrutil disable

此时按照官方安装文档安装即可.

恢复rootless

csrutil enable

PHP的SimpleHTTPServer

Python 的 SimpleHTTPServer

python可以使用命令

python -m SimpleHTTPServer <port>

来快速创建HTTPServer,但是无法运行php脚本;那php有没有类似的简易HTTPServer呢?

PHP 的 SimpleHTTPServer

PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器。

运行起来一样非常简单:

$ cd ~/public_html
$ $ php -S localhost:8000

这样就运行起一个支持PHP的简易HTTPServer了.

更多参数

-S <IP>:<port>  #指定IP及端口
-t <dir>        #指定HTTPServer的DocumentRoot

Tips

对于这种临时应急的简易HTTPServer,PHP提供的有个非常好的特性,在端口已被占用的情况下可以临时接管指定的端口指向当前Server.(也就是:nginx占用80端口时,无需关闭nginx,直接运行命令php -S localhost:80即可临时占有80端口的所有权.ctrl - c关闭后,又会把80端口的所有权还给nginx).

php回调的实现及php_user_func与php_user_func_array的区别

实现代码

<?php
class foo{
    static function callback($foo){
        return $foo . "bar";
    }   
} 

$string = function(){
    return "I'm ";
};
echo call_user_func('foo::callback', $string());
?>

扩展阅读[call_user_func与call_user_func_array的区别]

<?php
class foo{
    static function callback($foo, $bar){
        return $foo . $bar;
    }
}

$string_a = function(){
    return "I'm ";
};
$string_b = function(){
    return "yjiang.";
};
echo call_user_func('foo::callback', $string_a(), $string_b());
echo "\n";                                                                                                   
echo call_user_func_array('foo::callback', array($string_a(), $string_b()));
?>
######运行结果######
I'm yjiang.
I'm yjiang.

call_user_funccall_user_func_array的区别在于传递参数的方式不同,其功能相同

使用正则从一个带图片的字符串中匹配出网址并添加<a>标签

$str='<div>接口了发的撒了http://www.aaa.com/software_zone/2013/0903/2174529.shtml看见了飞洒<img src="http://www.aaa.com/itask_static/expression/t4/appstyle/expression/ext/normal/0b/tootha_org.gif" class="img_emotion"></div>';

需求是只匹配网址而不匹配图片的网址

preg_replace("/((?<!\")http:\/\/[A-Za-z0-9\.\-]+(\/[A-Za-z0-9\?\&\=;\+!'\(\)\*\-\._~%]*)*)/", '<a>\1</a>', $str)

用到了

  • 引用 - 使用 ()来标识需要引用的内容,并用\1引用.
  • 断言 - (?<!\") 匹配前面不是"的内容.

Copyright © 2016 yjiang's cake

返回顶部