VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php判断字符串编码函数

字符编码判断是我们时常全用于的一些东西,特别是我想判断用户输入的或提交过来的字符是什么编码从而进行有效的处理,下面我来给大家介绍php判断字符串编码函数.

  1. mb_detect_encoding()($str); 
  2. //判断字符串是什么编码 
  3. if ($tag === mb_convert_encoding(mb_convert_encoding($tag"GB2312""UTF-8"), "UTF-8""GB2312")) { 
  4. else {//如果是gb2312 的就转换为utf8的 
  5. $tag = mb_convert_encoding($tag'UTF-8''GB2312'); 

函数可以检测编码不过使用该函数必须打开php的extension=php_mbstring.dll扩展,如果大家使用的是空间而没修改php.ini配置文件夹的权限会不会有更好的函数来检查字符串编码呢,答应是肯定的.

判断字符串是否为UTF-8编码,代码如下:

  1. /** 
  2.  +---------------------------------------------------------- 
  3.  * 检查字符串是否是UTF8编码 
  4.  +---------------------------------------------------------- 
  5.  * @param string $string 字符串 
  6.  +---------------------------------------------------------- 
  7.  * @return Boolean 
  8.  +---------------------------------------------------------- 
  9.  */ 
  10. function is_utf8($string
  11.     return preg_match('%^(?: 
  12.          [x09x0Ax0Dx20-x7E]            # ASCII 
  13.        | [xC2-xDF][x80-xBF]             # non-overlong 2-byte 
  14.        |  xE0[xA0-xBF][x80-xBF]        # excluding overlongs 
  15.        | [xE1-xECxEExEF][x80-xBF]{2}  # straight 3-byte 
  16.        |  xED[x80-x9F][x80-xBF]        # excluding surrogates 
  17.        |  xF0[x90-xBF][x80-xBF]{2}     # planes 1-3 
  18.        | [xF1-xF3][x80-xBF]{3}          # planes 4-15 
  19.        |  xF4[x80-x8F][x80-xBF]{2}     # plane 16 
  20.    )*$%xs', $string); 

可检查出GB2312还是UTF-8,代码如下:

  1. function is_gb2312($str
  2.         for($i=0; $i<strlen($str); $i++) { 
  3.                 $v = ord( $str[$i] ); 
  4.                 if$v > 127) { 
  5.                         if( ($v >= 228) && ($v <= 233) ) 
  6.                         { //开源代码phpfensi.com 
  7.                                 if( ($i+2) >= (strlen($str) - 1)) return true;  // not enough 
  8. characters 
  9.                                 $v1 = ord( $str[$i+1] ); 
  10.                                 $v2 = ord( $str[$i+2] ); 
  11.                                 if( ($v1 >= 128) && ($v1 <=191) && ($v2 >=128) && ($v2 <= 191) ) // utf  
  12. 编码 
  13.                                         return false; 
  14.                                 else 
  15.                                         return true; 
  16.                         } 
  17.                 } 
  18.         } 
  19.         return true; 

有些朋友说可以使用mb_check_encoding函数来检查,这个本人没测试过大家可自行测试.

出处:http://www.phpfensi.com/php/20140910/5288.html


相关教程