现在的位置: 首页 > 综合 > 正文

PHP中牛叉代码(自认为)集锦

2014年01月30日 ⁄ 综合 ⁄ 共 2658字 ⁄ 字号 评论关闭

1.从哪个页面来,返回就到那个页面去。用到str_replace函数。

define(SINA_LOGIN_URL,'http://weibosina/');
define(TX_LOGIN)URL,'http://weibotx/');
$referer_from =str_replace(array(SINA_LOGIN_URL,TX_LOGIN_URL), '',  $_SERVER['HTTP_REFERER']);
$S->assign('return_back',$referer_from);

$_SERVER['HTTP_REFERER']表示从哪个页面跳转过来的。str_replace在这里替换成具体的那个页面比如:http://weibosina/login.php这个页面跳转走的。那么$referer_from = login.php了。

2.获取浏览器类型

通过$_SERVER["HTTP_USER_AGENT"]来识别:

 public function index() {
        $browser = 'other';

        if(strpos($_SERVER["HTTP_USER_AGENT"], "TheWorld") || strpos($_SERVER["HTTP_USER_AGENT"], "QIHU THEWORLD")){
            $browser = 'world';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "Maxthon")){
            $browser = 'aoyou';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "TencentTraveler")){ //  or (strpos($_SERVER["HTTP_USER_AGENT"], "Trident") AND strpos($_SERVER["HTTP_USER_AGENT"], "SLCC2"))
            $browser = 'telcent';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "SE 2") AND strpos($_SERVER["HTTP_USER_AGENT"], "MetaSr")){
            $browser = 'sogou';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "360SE") AND !strpos($_SERVER["HTTP_USER_AGENT"], "TencentTraveler")){
            $browser = '360';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "QIHU 360EE") AND !strpos($_SERVER["HTTP_USER_AGENT"], "TencentTraveler")){
            $browser = '360';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "MSIE 9.0")){
            $browser = 'ie9';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "MSIE 8.0")){
            $browser = 'ie8';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "MSIE 7.0")){
            $browser = 'ie7';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "MSIE 6.0")){
            $browser = 'ie6';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "Firefox")){
            $browser = 'firefox';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "Chrome")){
            $browser = 'chrome';
        }elseif(strpos($_SERVER["HTTP_USER_AGENT"], "Safari")){
            $browser = 'safari';
        }

        redirect("/start/$browser");exit;
    }

3.中英文混合截取指定长度。

有一些自己写的函数,来实现完美截取,但是比较麻烦,繁琐。

如果精确度不需要太高的话那就用系统自带的mb_substr()函数好了:

mb_substr('我们123a好', 0, 6,'utf-8');   //输出:我们123a 

'utf-8' 一定要加上去
他没有把中文算成2个字符,所有的算成1个字符,这对于有中英文混合的字符串,只需要截图前6位,这样的例子来说,非常实用。

4 获取url后缀

一个内置函数搞定:

$ext = strrchr($filename,'.');

5.等于与全等于

 ==、=== 对应的是!=和!==。没有!=== 啊,混蛋!

6. 子frame如何跳出自身的框架,执行父框架的操作。

 echo "<script>alert('登陆超时,请重新登陆');parent.location.href='/index.php/Public/login/'</script>"; die;

用parent.xx.xx 执行。

7.换行符

unix系列用 \n
windows系列用 \r\n
mac用 \r
PHP中可以用PHP_EOL来替代,以提高代码的源代码级可移植性
如: 

<?php
    echo PHP_EOL;
    //windows平台相当于    echo "\r\n";
    //unix\linux平台相当于    echo "\n";
    //mac平台相当于    echo "\r";
?>

类似常用的还有
DIRECTORY_SEPARATOR

可以用函数get_defined_constants()来获取所有PHP常量

8 define 一个常量

define(ROOT,direname(_FILE__));
echo ROOT;

上面输出的确可以输出ROOT的值,但是也会有一个警告:

Use of undefined constant ROOT - assumed 'ROOT'

所以,定义常量时,一定要加个引号。

define('ROOT',direname(_FILE__));
echo ROOT;

9 数组装换成带引号的字符串

$row = array('ayi','太原','hello',78);
$b = "'".implode( "','", $row ) . "'";
var_dump($b);
//   "'ayi','太原','hello','78'"

抱歉!评论已关闭.