流沙团
PHP处理特殊字符比对
2020-9-18 流沙团


0x01 处理需求:



第一组:空格替换为去掉,有小空格和大空格都要去掉;

第二组:—和-;

第三组:大小括号替换,统一成小括号。()()

第四组:斜杠替换,/替换/。

第五组:【替换为[,】替换为]。

第六组:英文字母大小写替换。

第七组:回车符、切换符替换为去掉。



将这些特殊字符处理后,再进行数据比对,判断是否合格







0x02 代码实现



实现思路, 



读出特殊字符的二进制码, 然后针对二进制码,进行数据处理







<?php

$keyword = '11 12 223 33';

echo '<pre>'.$keyword.'<br>';

$arr_kwd = str_split($keyword);
foreach ($arr_kwd as $kwd) {
echo $kwd . ',' . ord($kwd) . "<br>";
}


//处理特殊字符
function trimString($str){
if(is_string($str)){
//处理空格:
//特殊空格
$str = str_replace(chr(194).chr(160), '', $str);
//特殊空格 中文空格
$str = str_replace(chr(227).chr(128).chr(128), '', $str);
//普通空格
$str = str_replace(chr(32), '', $str);

//处理\t
$str = str_replace(chr(9), '', $str);

//处理— 转为-
$str = str_replace(chr(226).chr(128).chr(148), '-', $str);

//处理()
$str = str_replace(chr(239).chr(188).chr(136), '(', $str);
$str = str_replace(chr(239).chr(188).chr(137), ')', $str);

//处理 /
$str = str_replace(chr(239).chr(188).chr(143), '/', $str);

//处理 【】
$str = str_replace(chr(227).chr(128).chr(144), '[', $str);
$str = str_replace(chr(227).chr(128).chr(145), ']', $str);

//处理回车换行
$str = str_replace(chr(13).chr(10), '', $str);

//英文字母转大写
$str = strtoupper($str);
}
return $str;
}


$aaa = trimString($keyword);

var_dump($aaa);







function compareTirmString($str1,$str2){
$str3 = trimString($str1);
$str4 = trimString($str2);
if($str3 == $str4){
return true;
}else{
return false;
}
}





发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容