当前位置: 首页 > 后端技术 > PHP

PHP的mb_check_encoding使用

时间:2023-03-29 14:46:53 PHP

mb_check_encoding(PHP4>=4.4.3,PHP5>=5.1.3,PHP7)mb_check_encoding—检查字符串对于指定的编码是否有效mb_check_encoding—检查字符串是否在指定的编码ValidDescriptionboolmb_check_encoding([string$var=NULL[,string$encoding=mb_internal_encoding()]])//检查指定的字节流对于指定的编码是否有效。//这对于防止所谓的“无效编码攻击”很有用。//检查指定的字节流在指定的编码中是否有效。它可以有效避免所谓的“无效编码攻击(InvalidEncodingAttack)”。参数var要检查的字节流。如果省略,此函数将检查请求开头的所有输入。要检查的字节流。如果省略此参数,该函数将检查来自原始请求的所有输入。encoding预期的编码。预期的编码。返回值成功时返回TRUE,失败时返回FALSE。成功时返回TRUE,失败时返回FALSE。示例设置文件编码为github.bk*和githubblog*';echomb_check_encoding($str,'utf-8')。PHP_EOL;//输出空echomb_check_encoding($str,'gbk').PHP_EOL;//输出1/**utf-8编码的字符串-->设置文件编码为utf-8*/$str='博客园和github.';echomb_check_encoding($str,'utf-8')。PHP_EOL;//1echomb_check_encoding($str,'gbk').PHP_EOL;//输出空$utf8Str='WhoamIabc.';echomb_check_encoding($utf8Str,'utf-8').PHP_EOL;//输出1//如果有中文标点符号,则为空!!!回声mb_check_encoding($utf8Str,'gbk')。PHP_EOL;//输出1/**自定义检测字符串编码为utf-8*/functionis_utf8($str){return(bool)preg_match('//u',serialize($str));}echo'helloChina!'.is_utf8('你好中国!').PHP_EOL;//1functioncheck_utf8($str){$len=strlen($str);对于($i=0;$i<$len;$i++){$c=ord($str[$i]);如果($c>128){如果(($c>247)){返回假;}elseif($c>239){$bytes=4;}elseif($c>223){$bytes=3;}elseif($c>191){$bytes=2;}else{返回错误;}如果(($i+$bytes)>$len){返回假;}while($bytes>1){$i++;$b=ord($str[$i]);如果($b<128||$b>191){返回假;}$字节--;}}}returntrue;}//check_utf8echo结束check_utf8("hello中国").PHP_EOL;//1echocheck_utf8("\x00\xE3").PHP_EOL;//空/**检查字符串编码值*/functioncheckEncoding($string,$string_encoding){$fs=$string_encoding=='UTF-8'?'UTF-32':$string_encoding;$ts=$string_encoding=='UTF-32'?'UTF-8':$string_encoding;return$string===mb_convert_encoding(mb_convert_encoding($string,$fs,$ts),$ts,$fs);}/*测试1变量*/$string="\x00\x81";$encoding="Shift_JIS";/*test1mb_check_encoding(测试坏字节流)*/if(true===mb_check_encoding($string,$encoding)){echo'valid('.$encoding.')encoded字节流!.PHP_EOL;}else{echo'无效('.$encoding.')编码字节流!'.PHP_EOL;}/*test1checkEncoding(测试坏字节序列)*/if(true===checkEncoding($string,$encoding)){echo'valid('.$encoding.')编码字节序列!'.PHP_EOL;}else{echo'invalid('.$encoding.')编码的字节序列!'.PHP_EOL;}/*test2*//*test2variables*/$string="\x00\xE3";$encoding="UTF-8";/*test2mb_check_encoding(测试坏字节流)*/if(true===mb_check_encoding($string,$encoding)){echo'valid('.$encoding.')编码字节流!.PHP_EOL;}else{echo'无效('.$encoding.')编码字节流!'.PHP_EOL;}/*test2checkEncoding(测试坏字节序列)*/if(true===checkEncoding($string,$encoding)){echo'valid('.$encoding.')编码字节序列!'.PHP_EOL;}else{echo'invalid('.$encoding.')编码的字节序列!'.PHP_EOL;}文章参考http://php.net/manual/zh/func...转载并注明出处