PHP过滤非UTF8字符

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:53   2306   0

function utf8_filter($data)
{
$str = "";

for($n = 0; $n < strlen($data);)
{
$s = substr($data, $n, 1);
$v = ord($s);
if($v >= 127)
{
++$n;
$cnt = 0;
$tmp = $v;
while($tmp & 0x80)
{
$tmp = $tmp << 1;
++$cnt;
}

$x = 0;
while($x < $cnt && $n < strlen($data))
{
$s = substr($data, $n, 1);
if((ord($s) & 0xC0) == 0x80)
{
++$n;
++$x;
}
else
{
break;
}
}

if($x + 1 == $cnt)
{
$str = $str . substr($data, $n - $cnt, $cnt);
}
else
{
while($n < strlen($data))
{
$s = substr($data, $n, 1);
if(ord($s) & 0x80)
{
++$n;
}
else
{
break;
}
}
}
}
else
{
$str = $str. $s;
++$n;
}
}
return $str;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP