特殊字符正则匹配

3 篇文章 0 订阅
/**
     * 验证字符串知否包含特殊字符
     * @param string $string
     * @return mixed
     * */
    public function hasSpecialCharacter($string){
        $rule = '/[\?ˉˇ\¨\〃々~‖…\‘\’\“\”「」『』〖〗【】±×÷\∶\∧∨∑∏∪∩∈\∷√⊥\∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°\′\″℃\$¤¢£‰§№☆★○●◎◇◆□☑■△▲※→←↑↓〓\!\"#¥%&\'\*\+\.\/\:\;\<\=\>\?\@\^\`\?ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん\?ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ\?\?ΓΔΘΞΣΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺\^﹀︽︾﹁﹂﹃﹄︻︼︷︸\︱\︳︴\?АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя\ˊ\ˋ\˙–―‥\‵℅℉↖↗↘↙∕∟\∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰\╱\╲╳▁▂▃▄▅▆▇▉▊▋▌▍▎\▏▓▔\▕▼▽◢◣◤◥☉⊕〒\〝\〞\?āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ\?ńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ\ㄧㄨㄩ\〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕\︰¬¦℡㈱\?\‐┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋\﹑\﹒\﹔\﹕\﹖\﹗﹟\﹠﹡〇\﹢\﹣\﹤\﹥\﹦\﹨\﹩\﹪\﹫\?\━\│\┃\┄\┅┆┇\┈\┉┊┋ー\゛゜\ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎\﹐]/';
        // 上面正则存档,正则检测有问题,改用数组(数组可以获取存在哪些特殊字符)
        $rule1 = '?ˉˇ¨〃々~‖…‘’“”「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□☑■△▲※→←↑↓〓!"#¥%&\'*+./:;<=>?@^`?ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん?ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ??ΓΔΘΞΣΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺^﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴?АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюяˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞?āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ?ńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦℡㈱?‐┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋﹑﹒﹔﹕﹖﹗﹟﹠﹡〇﹢﹣﹤﹥﹦﹨﹩﹪﹫?━│┃┄┅┆┇┈┉┊┋ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹐';

        if(!empty($string)) {
            // str_split() 函数对中文和特殊字符不友好,使用正则preg_split()函数把字符串分割成字符数组
            $string_arr = array_unique(preg_split('/(?<!^)(?!$)/u', $string)); // 校验字符串转数组去重
            $rule_arr = array_unique(preg_split('/(?<!^)(?!$)/u', $rule1));  // 给定特殊字符串转数组去重
            $common_arr = array_intersect($string_arr, $rule_arr); // 获取两数组的交集数组
            if(count($common_arr)>0){
                return implode(',',$common_arr); // $common_arr 不为空即存在特殊字符,返回存在的特殊字符
            }
        }

        return false;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值