PHP 如何匹配文本中是否含有乱码字符

发布于 2022-09-01 11:59:02 字数 438 浏览 14 评论 0

网站经常有乱码用户名的提交,如何才可以通过PHP来判断文本中是否含有乱码?

php#UTF-8 
$str = '办证';
preg_match_all('/(...)/',$str,$matches);
print_r($matches);
die;
Array
(
    [0] => Array
        (
            [0] => 办
            [1] => 
            [2] => 证
        )

    [1] => Array
        (
            [0] => 办
            [1] => 
            [2] => 证
        )

)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷离° 2022-09-08 11:59:02

这是你的前台和后台的编码不一致造成的,前台输入的时候就应该进行判断是否让用户输入非法字符。

以下补充内容:

php<?php
/*
仅适用于php文档为ANSI编码
*/

/* 关闭页面错误提示,iconv("","UTF-8","办证证")这段代码一旦转入不是UTF-8编码就会错误 */
error_reporting(0);

$str = "办证"; //接收来的字符串

//尝试转换编码,
$str = iconv('', 'UTF-8', $str);

//匹配是否为UTF-8编码
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) {
//由于文件是ANSI编码,此处需用UTF8转换,页面才能正常输出
echo iconv('GB2312', 'UTF-8', '匹配正确');
} else {
//同上
echo iconv('GB2312', 'UTF-8', '匹配错误');
}
?>
掐死时间 2022-09-08 11:59:02

3个字的编码为\u529e\ue708\u8bc1,是utf-8,不知道有什么办法

云巢 2022-09-08 11:59:02

一是前台输入的时候进行非法字符的判断和处理,这样可以避免输入性乱码;二是前台和后台的编码应该一致才会避免发生乱码的现象。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文