PHP正则匹配中文、英文、数字的表达式

  •   
  • 1079
  • php
  • 1
  • dodobook
  • 2017/09/19

在项目应用中需要请求到第三方的接口数据(instagram通过标签tag查内容的接口),当输入空格 @ ¥ $ % ……等等特殊字符的时候就无法返回正式成功的数据。这个时候想到一个折中有损的方案。提交接口请求之前先把相关的特殊字符过滤替换了。

目的是仅保留 英文字母大小写 下划线 中文字符 和数字。


//正则表达式(推荐)
        $str = 'Abch!s&h<s()%*中国人#@';       //目标字符串
        $new_str = preg_replace("#[^\w|^\u{4E00}-\u{9FA5}]+#is", "", $str);		//只剩下中文数字字母下划线
        echo $new_str;
        echo '<hr>';
        //输出结果: Abchshs中国人

        //比较笨的方法
        $keys = [' ', '!', "'", '"', "‘", "’", '“', '”', '$', '¥', '&', '@', '*',
            '(', ')', '<', '>', '{', '}', '[', ']', '【', '】', '?', '~', '·', '`',
            '+', '-', '/', '%', ':', ';', '=', '(', ')', '#'
        ];
        $new_str2 = str_replace($keys, '', $str);
        echo $new_str2;
        
        //输出结果: Abchshs中国人
        
        
        //请多多学习 \w \W 参数
        //中文字符的匹配


我最大的遗憾就是只能为祖国牺牲一次!