请问这个字符是什么东西?

natici 2016-02-02 07:18:07
页面显示空格,base64_encode结果:Hw==

类似这种空格有没办法完全过滤掉?我已经用iconv转成gbk再转回来了,还是过滤不了。
$str = iconv('UTF-8', 'GBK//IGNORE', strip_tags($str));
$str = iconv('GBK', 'UTF-8//IGNORE', $str)
...全文
166 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
natici 2016-02-04
  • 打赏
  • 举报
回复
引用 1 楼 fdipzone 的回复:

/** 過濾字符串,保留UTF8字母數字中文及部份符號 
*   @param  String  $ostr 
*   @return String 
*/  
function filter_utf8_char($ostr){  
    preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches);  
    $str = join('', $matches[0]);  
    if($str==''){   //含有特殊字符需要逐個處理  
        $returnstr = '';  
        $i = 0;  
        $str_length = strlen($ostr);  
        while ($i<=$str_length){  
            $temp_str = substr($ostr, $i, 1);  
            $ascnum = Ord($temp_str);  
            if ($ascnum>=224){  
                $returnstr = $returnstr.substr($ostr, $i, 3);  
                $i = $i + 3;  
            }elseif ($ascnum>=192){  
                $returnstr = $returnstr.substr($ostr, $i, 2);  
                $i = $i + 2;  
            }elseif ($ascnum>=65 && $ascnum<=90){  
                $returnstr = $returnstr.substr($ostr, $i, 1);  
                $i = $i + 1;  
            }elseif ($ascnum>=128 && $ascnum<=191){ // 特殊字符  
                $i = $i + 1;  
            }else{  
                $returnstr = $returnstr.substr($ostr, $i, 1);  
                $i = $i + 1;  
            }  
        }  
        $str = $returnstr;  
        preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches);  
        $str = join('', $matches[0]);  
    }  
    return $str;  
}  
请问,这个正则会不会匹配不到全角的逗号,顿号等汉语标点符号呢?还有斜杠、反斜杠这些会不会过滤掉呢?
natici 2016-02-04
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
之前做过多年底层开发(汇编、C),不熟悉玩不转
怪不得,原来是高手哇。汇编牛b的都是牛人。
傲雪星枫 2016-02-04
  • 打赏
  • 举报
回复
引用 6 楼 natici 的回复:
[quote=引用 1 楼 fdipzone 的回复:]

/** 過濾字符串,保留UTF8字母數字中文及部份符號 
*   @param  String  $ostr 
*   @return String 
*/  
function filter_utf8_char($ostr){  
    preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches);  
    $str = join('', $matches[0]);  
    if($str==''){   //含有特殊字符需要逐個處理  
        $returnstr = '';  
        $i = 0;  
        $str_length = strlen($ostr);  
        while ($i<=$str_length){  
            $temp_str = substr($ostr, $i, 1);  
            $ascnum = Ord($temp_str);  
            if ($ascnum>=224){  
                $returnstr = $returnstr.substr($ostr, $i, 3);  
                $i = $i + 3;  
            }elseif ($ascnum>=192){  
                $returnstr = $returnstr.substr($ostr, $i, 2);  
                $i = $i + 2;  
            }elseif ($ascnum>=65 && $ascnum<=90){  
                $returnstr = $returnstr.substr($ostr, $i, 1);  
                $i = $i + 1;  
            }elseif ($ascnum>=128 && $ascnum<=191){ // 特殊字符  
                $i = $i + 1;  
            }else{  
                $returnstr = $returnstr.substr($ostr, $i, 1);  
                $i = $i + 1;  
            }  
        }  
        $str = $returnstr;  
        preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches);  
        $str = join('', $matches[0]);  
    }  
    return $str;  
}  
请问,这个正则会不会匹配不到全角的逗号,顿号等汉语标点符号呢?还有斜杠、反斜杠这些会不会过滤掉呢?[/quote] 不会,因为这些都是可以显示的字符。
natici 2016-02-03
  • 打赏
  • 举报
回复
老徐真厉害,好像什么问题都难不倒你似的。 想请教一下你为什么能对字符这么熟悉?当初是怎么学习的?
xuzuning 2016-02-03
  • 打赏
  • 举报
回复
echo bin2hex(base64_decode('Hw==')); 1f US (unit separator) 单元分隔符
xuzuning 2016-02-03
  • 打赏
  • 举报
回复
之前做过多年底层开发(汇编、C),不熟悉玩不转
傲雪星枫 2016-02-02
  • 打赏
  • 举报
回复

/** 過濾字符串,保留UTF8字母數字中文及部份符號 
*   @param  String  $ostr 
*   @return String 
*/  
function filter_utf8_char($ostr){  
    preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches);  
    $str = join('', $matches[0]);  
    if($str==''){   //含有特殊字符需要逐個處理  
        $returnstr = '';  
        $i = 0;  
        $str_length = strlen($ostr);  
        while ($i<=$str_length){  
            $temp_str = substr($ostr, $i, 1);  
            $ascnum = Ord($temp_str);  
            if ($ascnum>=224){  
                $returnstr = $returnstr.substr($ostr, $i, 3);  
                $i = $i + 3;  
            }elseif ($ascnum>=192){  
                $returnstr = $returnstr.substr($ostr, $i, 2);  
                $i = $i + 2;  
            }elseif ($ascnum>=65 && $ascnum<=90){  
                $returnstr = $returnstr.substr($ostr, $i, 1);  
                $i = $i + 1;  
            }elseif ($ascnum>=128 && $ascnum<=191){ // 特殊字符  
                $i = $i + 1;  
            }else{  
                $returnstr = $returnstr.substr($ostr, $i, 1);  
                $i = $i + 1;  
            }  
        }  
        $str = $returnstr;  
        preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches);  
        $str = join('', $matches[0]);  
    }  
    return $str;  
}  

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧