300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > php判断是否连续出现数字 php通过gbk编码判断 含有连续数字 可用于判断QQ号 手机号等。...

php判断是否连续出现数字 php通过gbk编码判断 含有连续数字 可用于判断QQ号 手机号等。...

时间:2024-07-15 07:04:17

相关推荐

php判断是否连续出现数字 php通过gbk编码判断 含有连续数字 可用于判断QQ号 手机号等。...

有可能有些输入,不希望让用户的评论或者私信中含有类似于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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。