- <description>
- <![CDATA[  AT&amp;amp;T在今天宣布自己的网络已经激活了100万部iPhone 4S的同时,AT&amp;amp;T还公布了2011年第三季度的财政收入报告。就像苹果公布的结果一样,AT&amp;amp;T在今年第三季度的iPhone激...
  ]]> 
  </description>
文本里面出现这种乱码咋办,XML解析出错,请问怎么过滤掉这种非法字符

解决方案 »

  1.   

    AT&amp;amp这个就是乱码,我想了很多办法过滤掉它结果还是不行..     $description = $v['introtext'];
         $description = strip_tags($description);
         $description = str_replace('&nbsp;', '', $description);
         $description = htmlspecialchars($description);
         $description = iconv("UTF-8", "UTF-8//IGNORE", $description); //为了避免出现乱码上面是我随便试的过滤办法
      

  2.   

    是编辑们直接从WORD里面复制文章进去提交生成的,不是解码的问题
      

  3.   


    $str = <<<str
    AT&amp;amp;T在今天宣布自己的网络已经激活了100万部iPhone 4S的同时,AT&amp;amp;T还公布了2011年第三季度的财政收入报告。就像苹果公布的结果一样,AT&amp;amp;T在今年第三季度的iPhone激...
    str;
    $str = htmlspecialchars_decode($str);
    echo preg_replace('/[^\x{4e00}-\x{9fa5}\d\w,。\.& ]/u', '', $str);//中文字符自己根据源内容符号添加.
      

  4.   

    找到一个更好的正则模式.
    echo preg_replace('/[^ -~一-龥]/u', '', $str);
    原贴
      

  5.   

    $str = <<<str
    AT&amp;amp;T在今天宣布自己~!@#¥%……&*()——+、?。,的网络已经激活了100万部iPhone 4S的同时,AT&amp;amp;T还公布了2011年第三季度的财政收入报告。就像苹果公布的结果一样,AT&amp;amp;T在今年第三季度的iPhone激...
    str;
    echo $str.'<br/>';
    $str = htmlspecialchars_decode($str);
    echo preg_replace('/[^ -~一-龥\x{2000}-\x{202f}\x{3001}-\x{300f},!]/u', '', $str);
    echo '<br/>';
    echo preg_replace('/[^[:punct:] \d\w\x{4e00}-\x{9fa5}\x{2000}-\x{202f}\x{3001}-\x{300f},!]/u', '', $str);//跟上面那个正则一样
      

  6.   

    $s = 'AT&amp;amp;T';
    $s = html_entity_decode ($s);
    echo $s = html_entity_decode ($s); //AT&T
      

  7.   

    谢谢各位, 暂时 编辑下文章把乱码去掉了,上面的方法有空我再测试一下
    以前也出现过乱码 
    iconv("UTF-8", "UTF-8//IGNORE", $description); 我用这个方法自动 去掉了但是像今天出现的    又去不掉是出现在 
    AT&amp;amp;T在今年第三季度的iPhone激...这句话里面
      

  8.   

    &amp;amp;不是乱码。是转译过的。具体查看你的数据源是否经过转移函数转译过
      

  9.   

    用tinyxml解析器。