首页 > 编程 > PHP > 正文

PHP的两个常用函数截取中文字符串无乱码与获取客户端IP地址

2019-11-06 08:46:41
字体:
来源:转载
供稿:网友

        1.截取中文字符无乱码支持UTF-8、GBK等编码,原理就是判断是否有可用扩展,如果有扩展则使用扩展函数,没有扩展根据中文的ASCII码进行匹配。

        /*

         * @param string $str 需要转换的字符串         * @param string $start 开始位置         * @param string $length 截取长度         * @param string $charset 编码格式

        */

function msubstr($str, $start=0, $length, $charset="utf-8") {    if(function_exists("mb_substr"))        return mb_substr($str, $start, $length, $charset);    elseif(function_exists('iconv_substr')) {        return iconv_substr($str,$start,$length,$charset);    }    $re['utf-8']   = "/[/x01-/x7f]|[/xc2-/xdf][/x80-/xbf]|[/xe0-/xef][/x80-/xbf]{2}|[/xf0-/xff][/x80-/xbf]{3}/";    $re['gb2312'] = "/[/x01-/x7f]|[/xb0-/xf7][/xa0-/xfe]/";    $re['gbk']    = "/[/x01-/x7f]|[/x81-/xfe][/x40-/xfe]/";    $re['big5']   = "/[/x01-/x7f]|[/x81-/xfe]([/x40-/x7e]|/xa1-/xfe])/";    PReg_match_all($re[$charset], $str, $match);    $slice = join("",array_slice($match[0], $start, $length));    return $slice;}

        2.获取客户端ip地址

        

function get_client_ip(){   if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))       $ip = getenv("HTTP_CLIENT_IP");   else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))       $ip = getenv("HTTP_X_FORWARDED_FOR");   else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))       $ip = getenv("REMOTE_ADDR");   else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))       $ip = $_SERVER['REMOTE_ADDR'];   else       $ip = "unknown";   return($ip);}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表