有可能有些输入,不希望让用户的评论或者私信中含有类似于QQ号,手机号的文本,比如交友网站。还有些恶意SEO通过,构造恶意检索词,检索词中包含QQ,手机号等,让百度爬取到,增加展现。也需要将这些检索词屏蔽掉。numberSafe函数通过GBK码表,判断输入是否包含连续的5个数字,中文数字,数字谐音,或者特殊中文字符(①②Ⅰ Ⅱ等)如果包含返回false,不包含返回true。

 function numberSafe($str) {
//阿拉伯数字
$assicNum = array(48,57);
//中文字符
$chineseNum = array(
//特殊数字
'162'=>array(161,255),
//一
'210'=>array(187,239),
//二
'182'=>array(248,256),
'183'=>array(161,161),
//三
'200'=>array(253,256),
'201'=>array(161,162),
//四
'203'=>array(185,200),
//五
'206'=>array(215,243),
//六 零
'193'=>array(224,249),
//七
'198'=>array(218,253),
//八
'176'=>array(197,214),
//九
'190'=>array(190,206),
//十
'202'=>array(166,212)
);
$str = iconv('UTF-8', 'GBK', $str);
$dangoursMax = $dangours = 0;
for ( $i = 0; $i < strlen($str) && $dangouesMax < 5; ) {
$assic = ord($str[$i]);
if ( $assic < 128 ) {
if ( $assic > $assicNum[0] - 1 && $assic < $assicNum[1] + 1 ) {
$dangours++;
} else {
$dangoursMax = max($dangours, $dangoursMax);
$dangours = 0;
}
$i += 1;
} else {
$assicNext = ord($str[$i+1]);
if ( array_key_exists($assic, $chineseNum) && $assicNext > $chineseNum[$assic][0] - 1
&& $assicNext < $chineseNum[$assic][1] + 1 ) {
$dangours++;
} else {
$dangoursMax = max($dangours, $dangoursMax);
$dangours = 0;
}
$i += 2;
}
}
$dangoursMax = max($dangours, $dangoursMax);
return $dangoursMax < 5 ? true : false;
}

测试

var_dump(numberSafe('12345'));   //false
var_dump(numberSafe('一二三四五')); //false
var_dump(numberSafe('一贰叁肆五')); //false
var_dump(numberSafe('衣领511'));    //false
var_dump(numberSafe('⒈⒉⒊⒋⒌')); //false

 

php通过gbk编码判断 含有连续数字 可用于判断QQ号,手机号等。的更多相关文章

  1. 使用GBK编码请求访问nodejs程序报415错误:Error: unsupported charset at urlencodedParser ...

    最近遇到一个问题,第三方用户向我们提供给的回调地址发送请求时一直报415错误,结果发现他们使用的是GBK编码请求,而我们使用的node + express4 程序,不支持GBK编码请求. 问题出在下面 ...

  2. C语言:GB2312编码和GBK编码,将中文存储到计算机

    计算机是一种改变世界的发明,很快就从美国传到了全球各地,得到了所有国家的认可,成为了一种不可替代的工具.计算机在广泛流行的过程中遇到的一个棘手问题就是字符编码,计算机是美国人发明的,它使用的是 ASC ...

  3. Qt5程序参数包含中文GBK编码的问题

    1.背景 Qt5程序(WeekReport.exe)的main函数里有如下代码: //only for test int main(int argc, char *argv[]) { QCoreApp ...

  4. jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)(转)

    版权声明]:版权归作者所有,转载时请以超链接形式标明文章原始出处和作者信息及本声明:http://www.open-lib.com/Forum/Read_69_1.action 前言: 当jquery ...

  5. juqery 判断所有input 不能为空 判断只能为数字 判断身份证号:18位和15位 判断是否银行卡号

    //jq 判断某字符串是否含有特殊符号 function CheckNum() { //定义数组保存特殊字符 var AllNumIsSame = new Array("’", & ...

  6. UTF-8和GBK编码之间的区别(页面编码、数据库编码区别)以及在实际项目中的应用

    第一节:UTF-8和GBK编码概述 UTF-8 (8-bit Unicode Transformation Format) 是一种针对Unicode的可变长度字符编码,又称万国码,它包含全世界所有国家 ...

  7. Ascii码 unicode码 utf-8编码 gbk编码的区别

    ASCII码: 只包含英文,数字,特殊符号的编码,一个字符用8位(bit)1字节(byte)表示 Unicode码: 又称万国码,包含全世界所有的文字,符号,一个字符用32位(bit)4字节(byte ...

  8. 【python】获取列表中最长连续数字

    最近开发遇到一个功能需求,目的是要获取一个AI分析结果中最长连续帧,比如一个视频中连续3帧有人,那么我认为这个视频就是有人,我就要判断这个视频帧列表中是否有连续的三帧有人.本质就是获取列表中的最长连续 ...

  9. Python中文GBK编码解决实例

    http://eatsalt.blog.163.com/blog/static/879402662009420508748/ #coding:gbk l=['我'.decode('gbk'),'我'. ...

随机推荐

  1. MS SqlServer 随机查询并随机排序

    MS SqlServer : select top N * from Table1 order by NewId() mySql: SELECT * FROM tableName ORDER BY r ...

  2. Day04 流程控制 while 和for循环

    一.流程控制 if 判断 python中使用缩进来区分代码块的 语法 一: #python if 条件: 代码块1 代码块2 自上而下依次运行 语法二: # python if 条件一: 代码一 el ...

  3. 「linux」后台启动nohup经常跟的>/dev/null 2>&1是什么意思

    https://www.cnblogs.com/wangsongbai/p/10215155.html 我们在写启动脚本的时候,会用nohup &,这个大家都知道,但是经常会有 >/de ...

  4. python学习2(转载)

    一.流程控制之while循环 语法:while 条件: 循环体else: else语句(当条件不成立的时候执行这里 和break没关系) 判断条件是否成立. 如果成立执行循环体.然后再次判断条件,.. ...

  5. python_元组 学习

    一.创建元组 代码: name=(‘chinese’,’gansu’,’beijing’) 创建空元组 name=() 元组中只包含一个元素时,需要在玄素后面加逗号(,)消除歧义: name=(‘ch ...

  6. 时间比较早晚java

    package demo; import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale; publi ...

  7. ST-LINK接口定义

    ST-LINKIII管脚定义及接法:     ST-LINK IIILED灯三种状态含义: 常亮:目标板与ST-LINK在SWIM模式或者JTAG/SWD模式下已经通讯初始化. 闪烁:目标板与ST-L ...

  8. 软件使用---Eclipse

    代码提示快捷操作.这个叫做,内容分析(content assist) 1.设置自动提示: 2.设置快捷键:

  9. Murano Weekly Meeting 2015.08.18

    Meeting time: 2015.August.18th 1:00~2:00 Chairperson:  Nikolay Starodubtsev, from Mirantis Meeting s ...

  10. spring4 使用websocket

    要了解的内容: sockjs,对于低版本的ie等不支持websocket的浏览器,采用js模拟websocket对象的办法来实现兼容(其实也有轮询的情况).sockjs地址 https://githu ...