php7 mysql 字符过滤_php如何过滤不可见字符

php过滤不可见字符的方法:首先创建一个PHP代码示例文件;然后定义一个“filterNonPrintableChar”方法;接着通过isset、ord等函数实现过滤逻辑;最后通过“var_dump”输出过滤结果即可。

05ff1dbacdefacf6b0da61a9b2a3ee90.png

php过滤不可见字符

编码知识

ASCII码为标准符号、数字、英文等进行了保留,取值范围是0~127,还有一部分作为扩展ASCII码128~255。当操作系统采用非ASCII编码时(比如汉字编码),一般用扩展ASCII码来进行,约定用128~255范围的编码连续2~3甚至4个字节来进行汉字编码。

所以可以判断ASCII码十进制值是否大于127来筛选出汉字。

php代码<?php

/**

* @param $str

* @return string

* 过滤不可见字符,支持中文过滤

* 0至31和127这33个编码是不可见的特殊字符(控制符)

*/

function filterNonPrintableChar($str)

{

$i = 0;

$newStr = '';

while (isset($str[$i])) {

$char = $str[$i];

$asc = ord($char);

if ($asc > 31 && $asc < 127 || $asc > 127) {

$newStr .= $char;

}

$i++;

}

return $newStr;

}

$str = chr(1) ."a3#2%1". chr(2) . chr(54) . "s哈哈ad~a好的s";

var_dump(filterNonPrintableChar($str));

$str = "“ASCII码为标准符号、数字、英文等进行了保留,取值范围是0~127,还有一部分作为扩展ASCII码128~255当操作系统采用非ASCII编码时(比如汉字编码),一般用扩展ASCII码来进行,约定用128~255范围的编码连续2~3甚至4个来进行...”";

var_dump(filterNonPrintableChar($str));


版权声明:本文为weixin_39683144原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。