网站经常有乱码用户名的提交,如何才可以通过PHP来判断文本中是否含有乱码?
1 2 3 4 5 6 | <code>php</code><code>#UTF-8
$str = '办证' ;
preg_match_all( '/(...)/' , $str , $matches );
print_r( $matches );
die ;
</code>
|
Copy after login
Copy after login
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <code>Array
(
[0] => Array
(
[0] => 办
[1] =>
[2] => 证
)
[1] => Array
(
[0] => 办
[1] =>
[2] => 证
)
)
</code>
|
Copy after login
Copy after login
回复内容:
网站经常有乱码用户名的提交,如何才可以通过PHP来判断文本中是否含有乱码?
1 2 3 4 5 6 | <code>php</code><code>#UTF-8
$str = '办证' ;
preg_match_all( '/(...)/' , $str , $matches );
print_r( $matches );
die ;
</code>
|
Copy after login
Copy after login
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <code>Array
(
[0] => Array
(
[0] => 办
[1] =>
[2] => 证
)
[1] => Array
(
[0] => 办
[1] =>
[2] => 证
)
)
</code>
|
Copy after login
Copy after login
这是你的前台和后台的编码不一致造成的,前台输入的时候就应该进行判断是否让用户输入非法字符。
以下补充内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <code>php</code><code><?php
error_reporting (0);
$str = "办证" ;
$str = iconv( '' , 'UTF-8' , $str );
function is_utf8( $utf8str )
{
if (preg_match( '/^([' . chr (228) . '-' . chr (233) . ']{1}[' . chr (128) . '-' . chr (191) . ']{1}[' . chr (128) . '-' . chr (191) . ']{1}){1}/' , $utf8str ) == true || preg_match( '/([' . chr (228) . '-' . chr (233) . ']{1}[' . chr (128) . '-' . chr (191) . ']{1}[' . chr (128) . '-' . chr (191) . ']{1}){1}$/' , $utf8str ) == true || preg_match( '/([' . chr (228) . '-' . chr (233) . ']{1}[' . chr (128) . '-' . chr (191) . ']{1}[' . chr (128) . '-' . chr (191) . ']{1}){2,}/' , $utf8str ) == true) {
return true;
} else {
return false;
}
}
if (is_utf8( $str ) == 1) {
echo iconv( 'GB2312' , 'UTF-8' , '匹配正确' );
} else {
echo iconv( 'GB2312' , 'UTF-8' , '匹配错误' );
}
?>
</code>
|
Copy after login
3个字的编码为\u529e\ue708\u8bc1
,是utf-8,不知道有什么办法
一是前台输入的时候进行非法字符的判断和处理,这样可以避免输入性乱码;二是前台和后台的编码应该一致才会避免发生乱码的现象。