您的位置:首页 > 编程语言 > PHP开发

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

2016-08-31 09:35 1041 查看
  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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐