博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Discuz!常用函数解析(2)
阅读量:4197 次
发布时间:2019-05-26

本文共 4861 字,大约阅读时间需要 16 分钟。

<?php

/**
* 根据中文裁减字符串
* @param $string - 字符串
* @param $length - 长度
* @param $doc - 缩略后缀
* @return 返回带省略号被裁减好的字符串
*/
function cutstr($string, $length, $dot = ' ...') {
        global $charset;

        if(strlen($string) <= $length) {

                return $string;
        }

        $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);

        $strcut = '';

        if(strtolower($charset) == 'utf-8') {

                $n = $tn = $noc = 0;

                while($n < strlen($string)) {

                        $t = ord($string[$n]);

                        if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
                                $tn = 1; $n++; $noc++;
                        } elseif(194 <= $t && $t <= 223) {
                                $tn = 2; $n += 2; $noc += 2;
                        } elseif(224 <= $t && $t < 239) {
                                $tn = 3; $n += 3; $noc += 2;
                        } elseif(240 <= $t && $t <= 247) {
                                $tn = 4; $n += 4; $noc += 2;
                        } elseif(248 <= $t && $t <= 251) {
                                $tn = 5; $n += 5; $noc += 2;
                        } elseif($t == 252 || $t == 253) {
                                $tn = 6; $n += 6; $noc += 2;
                        } else {
                                $n++;
                        }

                        if($noc >= $length) {

                                break;
                        }

                }

                if($noc > $length) {
                        $n -= $tn;
                }

                $strcut = substr($string, 0, $n);

        } else {

                for($i = 0; $i < $length; $i++) {
                        $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
                }
        }

        $strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut);

        return $strcut.$dot;

}

/**

* 处理转义字符
* @param $string -字符串
* @param $force - 是否强制
* @return 返回整理好的字符串
*/
function daddslashes($string, $force = 0) {
        !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
        if(!MAGIC_QUOTES_GPC || $force) {
                if(is_array($string)) {
                        foreach($string as $key => $val) {
                                $string[$key] = daddslashes($val, $force);
                        }
                } else {
                        $string = addslashes($string);
                }
        }
        return $string;
}

/**

* 检测日期的有效性
*/
function datecheck($ymd, $sep='-') {
        if(!empty($ymd)) {
                list($year, $month, $day) = explode($sep, $ymd);
                return checkdate($month, $day, $year);
        } else {
                return FALSE;
        }
}

/**

* 调试信息
*/
function debuginfo() {
        if($GLOBALS['debug']) {
                global $db, $discuz_starttime, $debuginfo;
                $mtime = explode(' ', microtime());
                $debuginfo = array('time' => number_format(($mtime[1] + $mtime[0] - $discuz_starttime), 6), 'queries' => $db->querynum);
                return TRUE;
        } else {
                return FALSE;
        }
}

/**

* 退出系统
*/
function dexit($message = '') {
        echo $message;
        output();
        exit();
}

function dfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) {

        $return = '';
        $matches = parse_url($url);
        $host = $matches['host'];
        $path = $matches['path'] ? $matches['path'].'?'.$matches['query'].'#'.$matches['fragment'] : '/';
        $port = !empty($matches['port']) ? $matches['port'] : 80;

        if($post) {

                $out = "POST $path HTTP/1.0\r\n";
                $out .= "Accept: */*\r\n";
                //$out .= "Referer: $boardurl\r\n";
                $out .= "Accept-Language: zh-cn\r\n";
                $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
                $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
                $out .= "Host: $host\r\n";
                $out .= 'Content-Length: '.strlen($post)."\r\n";
                $out .= "Connection: Close\r\n";
                $out .= "Cache-Control: no-cache\r\n";
                $out .= "Cookie: $cookie\r\n\r\n";
                $out .= $post;
        } else {
                $out = "GET $path HTTP/1.0\r\n";
                $out .= "Accept: */*\r\n";
                //$out .= "Referer: $boardurl\r\n";
                $out .= "Accept-Language: zh-cn\r\n";
                $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
                $out .= "Host: $host\r\n";
                $out .= "Connection: Close\r\n";
                $out .= "Cookie: $cookie\r\n\r\n";
        }
        $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
        if(!$fp) {
                return '';//note $errstr : $errno \r\n
        } else {
                stream_set_blocking($fp, $block);
                stream_set_timeout($fp, $timeout);
                @fwrite($fp, $out);
                $status = stream_get_meta_data($fp);
                if(!$status['timed_out']) {
                        while (!feof($fp)) {
                                if(($header = @fgets($fp)) && ($header == "\r\n" ||  $header == "\n")) {
                                        break;
                                }
                        }

                        $stop = false;

                        while(!feof($fp) && !$stop) {
                                $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
                                $return .= $data;
                                if($limit) {
                                        $limit -= strlen($data);
                                        $stop = $limit <= 0;
                                }
                        }
                }
                @fclose($fp);
                return $return;
        }
}

/**

* HTML转义字符
* @param $string - 字符串
* @return 返回转义好的字符串
*/
function dhtmlspecialchars($string) {
        if(is_array($string)) {
                foreach($string as $key => $val) {
                        $string[$key] = dhtmlspecialchars($val);
                }
        } else {
                $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
                str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));
        }
        return $string;
}

function dheader($string, $replace = true, $http_response_code = 0) {

        $string = str_replace(array("\r", "\n"), array('', ''), $string);
        if(empty($http_response_code) || PHP_VERSION < '4.3' ) {
                @header($string, $replace);
        } else {
                @header($string, $replace, $http_response_code);
        }
        if(preg_match('/^\s*location:/is', $string)) {
                exit();
        }
}

/**

* 上传文件的函数
* @param $file - 要上传的文件
* @return 返回带省略号被裁减好的字符串
*/
function disuploadedfile($file) {
        return function_exists('is_uploaded_file') && (is_uploaded_file($file) || is_uploaded_file(str_replace('\\\\', '\\', $file)));
}
?>

转载地址:http://buzli.baihongyu.com/

你可能感兴趣的文章
游戏引擎学习阶段总结
查看>>
俄罗斯方块Laya源码(非商用未拆分无架构)
查看>>
U3D将场景数据存为表格
查看>>
C#入门学习笔记(一):hello world与学习大纲
查看>>
C#入门学习笔记(二):数据类型与表达式
查看>>
解决旧版Animation无法在新版动画animator中播放问题
查看>>
U3D人物选择界面:rawimage与摄像机
查看>>
如何做一名游戏测试?
查看>>
腾讯物联网操作系统TencentOS tiny线上移植大赛,王者机器人、QQ公仔、定制开发板等礼品等你来拿 !
查看>>
为云而生,腾讯云服务器操作系统TencentOS内核正式开源
查看>>
腾讯汤道生:开源已成为许多技术驱动型产业重要的创新推动力
查看>>
微信小程序多端框架 kbone 开源
查看>>
视频质量评估算法 DVQA 正式开源
查看>>
腾讯优图开源视频动作检测算法DBG,打破两项世界纪录
查看>>
在中国提供了60亿次服务的疫情模块向世界开源 腾讯抗疫科技输出海外
查看>>
在中国提供了60亿次服务的疫情模块向世界开源
查看>>
世界卫生组织与腾讯加深合作 新冠肺炎AI自查助手全球开源
查看>>
Hibernate 中get, load 区别
查看>>
java反射详解
查看>>
JPA 注解
查看>>