http://zh.wikipedia.org/wiki/%E8%A5%BF%E9%87%8C%E5%B0%94%E5%AD%97%E6%AF%8D%E5%88%97%E8%A1%A8
这种很奇怪的符号
Unicode在0400-A690范围  if(preg_match("/[^\x{0400}-\x{A690}\x]+/u",$str)){
   $str=null;
  }我想判断出现这个内容直接返回空!
可是都是失败希望来帮帮..

解决方案 »

  1.   


    echo urldecode("http://zh.wikipedia.org/wiki/%E8%A5%BF%E9%87%8C%E5%B0%94%E5%AD%97%E6%AF%8D%E5%88%97%E8%A1%A8");
    看看这个结果……
      

  2.   

    查看下urlencode, urldecode, rawurlencode, rawurldecode.的相关文档
      

  3.   

    你们打开那个地址 ... 不是url加密
    http://zh.wikipedia.org/wiki/%E8%A5%BF%E9%87%8C%E5%B0%94%E5%AD%97%E6%AF%8D%E5%88%97%E8%A1%A8关于对Ѐ Ё Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ќ Ѝ Ў Џ 这种符号的判断
      

  4.   

    js里面用escape 之后发到php php unescape 之后导致乱码 所以想屏蔽了这段
    不然也不知道有什么好的方法php.net给的 unescape都解不开这种符号的 unicode....其他网站的提供的只可以解开一个如果几个不同的这种符号在一起 后面全部解不开...
      

  5.   

    [^\x{0400}-\x{A690}\x]+为什么会出现上面红色部分?另外你加^(蓝色部分),就意味着从$str开头第一个字符起,必须是\x0400-\xa690的字符,如果第一个不是,例如(axxxЀ Ё Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ќ Ѝ Ў Џ),这个正则就不会起作用
      

  6.   

    http://zh.wikipedia.org/wiki/%E8%A5%BF%E9%87%8C%E5%B0%94%E5%AD%97%E6%AF%8D%E5%88%97%E8%A1%A8
    不是什么奇怪的符号,他就是http://zh.wikipedia.org/wiki/西里尔字母列表  的url编码urlencode('http://zh.wikipedia.org/wiki/西里尔字母列表')==http://zh.wikipedia.org/wiki/%E8%A5%BF%E9%87%8C%E5%B0%94%E5%AD%97%E6%AF%8D%E5%88%97%E8%A1%A8urldecode('http://zh.wikipedia.org/wiki/%E8%A5%BF%E9%87%8C%E5%B0%94%E5%AD%97%E6%AF%8D%E5%88%97%E8%A1%A8') ==   http://zh.wikipedia.org/wiki/西里尔字母列表所以正则:
    if(preg_match("/[^\x{4e00}-\x{9fa5}]+/u",$str)){
      $str=null;
    }
      

  7.   


    呃....我说的不是url... 是这个网站里面 提供的 unicode 码段  用正则判断
      

  8.   

    我写成这样也不行
      if(preg_match("/[\x{0400}-\x{04FF}]/u",$str)){
       $str="1";
      }
      

  9.   

    你确定你的输入来源是utf8编码?没有牵涉到其他编码?