张三碶李斯  想替换成 “张三矸李斯”echo str_replace('碶','矸',"张三碶李斯");可事实出错  parse error, unexpected T_STRING 
碶 是一个生僻字 不在GB2312里,我想这是主因吧,谁有好办法?string

解决方案 »

  1.   

    用正则替换 
    preg_replace("/\u78b6/g",'矸', $str);
      

  2.   

    Warning: preg_replace() [function.preg-replace]: Unknown modifier 'g' 报错
      

  3.   

    不完全是生僻字的原因,碶 GBK内码为B45C,同时\的内码为5C
    所以在gb2312时,产生歧义了,其他xx5C的汉字也有类似情况g是javascript的模式修正符,php没有这个,#1搞混了
      

  4.   

    本帖最后由 xuzuning 于 2013-01-22 16:30:57 编辑
      

  5.   

    3楼说的对。又见低字节5c这个经典问题。
    参考下Zend Multibyte来处理这个问题,或者干脆使用utf-8
      

  6.   

    四楼版主,感谢回复!我这不是在钻牛角尖。张三碶李斯 是 数据库取出来的
    现在要存放到 另一个数据库里,因另一个数据库 字库不支持 碶
    所以才想 在插入前 用 矸 先行替换 五楼 
    参考下Zend Multibyte 这个也参考了,貌似也没用啊!!
      

  7.   

    替换不解决问题, 因为还有其它汉字有同样问题.用utf8做中介, 如果数据库是mysql, 通过设置双方数据库的set names就行了.
      

  8.   

    <?php
    $c="碶\";
    echo str_replace($c,'矸',"张三碶李斯");
    ?>
      

  9.   

    你应该修改这个库的字符集什么样的中文字符集不支持 碶 呢?显然是 GB2312
    gb2312 只有六千个汉字,而 gbk、utf-8 都是两万多汉字可见不仅仅不支持 碶,而是不支持的多了在 GBK 字符集中,像“碶”这样第二个字节是 0x5c 的有七十多个
    你也可以做成字典加载