为什么我的数据库中的中文记录全部都是类似 &#27743&#38272....一连串这样的字符
但我echo它们,会显示正确的中文,但我拿其中一个中文,用stristr( ),判断是否在其中的时候,又不行,
请大侠打救!!我想判断中文是否在其中啊

解决方案 »

  1.   

    形如 &#27743&#38272 这样的串是 unicode 字符的 HTML 编码形式
    通常具有 HTML 编辑功能的编辑器在字符集不同的情况下会将中文转换成这种格式你可以用 mb_convert_encoding 函数进行编码转换,其对应编码名为 HTML-ENTITIES
    如echo mb_convert_encoding('江门' , 'HTML-ENTITIES', 'gbk'); 
    江门反之亦然
      

  2.   


    $a = mb_convert_encoding('&#40857&#27888&#20116&#37329&#30005&#22120&#26377&#38480&#20844&#21496' , 'gb2312','HTML-ENTITIES'); 
    $b = "龙泰";
      if (stristr($a, $b) !== false) {
    echo "包含";
    die;
    }为什么没有显示包含?
      

  3.   

    你打印出 $a 就可看到:转码并未成功
    原因是 格式不规范
    龙泰五金电器有限公司
    就对了
    你可以预处理一下
      

  4.   

    我本来是“龙泰五金电器有限公司”提交记入数据库的,但打开数据库看就是“&#40857&#27888&#20116&#37329&#30005&#22120&#26377&#38480&#20844&#21496”
    怎么说不规范呢?
    请教群主解决方法
      

  5.   

    php 5.4+ 可以这样用
    echo html_entity_decode('龙泰五金电器有限公司');
    /*龙泰五金电器有限公司*/不规范,应该是程序做了什么过滤去掉了“ ; ”
      

  6.   

    我直接echo ,显示正确的中文echo “&#40857&#27888&#20116&#37329&#30005&#22120&#26377&#38480&#20844&#21496”;
    /*龙泰五金电器有限公司*/