向各位PHP高人请教一个问题.数据库中存放了一个大字段文本,里边有一段字符 "二〇一〇年一月二十四日" .在替换"二〇一〇"中的"〇"时替换不掉,我使用的是str_replace()函数,字符集是GB2312.请问为什么会替换不掉呢??
$restr = $row[0];
$restr = str_replace("〇","0",$restr);
echo $restr;

解决方案 »

  1.   

    没有问题也
    $restr = '二〇一〇年一月二十四日';
    $restr = str_replace("〇","0",$restr);
    echo $restr;//out 二0一0年一月二十四日
      

  2.   


    $htmlbody=<<<HTML
     "二〇一〇年一月二十四日" .
    HTML;$str = str_replace("〇", "0", $htmlbody);print_r('<pre>'.$str.'</pre>');
    //--------------------------------- 输出
     "二0一0年一月二十四日" .
      

  3.   

    $restr = $row[0]; //原因可能这个$row[0]没有值, 你打印一下就知道print($row[0]);
      

  4.   

    回复:xuzuning我这里的输出是 "二?一?年一月二十四日" (跟apache设置有关系么?)另外$row[0]是有数据的
      

  5.   

    另外发现一个奇怪的问题.
    对$restr赋下面的值输出就没问题.
    $restr = '二〇一〇年一月二十四日'; 
    $restr = str_replace("〇","0",$restr);但是对$restr赋数据库里的大字段就替换不掉.这个......
      

  6.   

    你换成utf-8的编码格式试一下呢?
      

  7.   

    可能与数据库编码有关假定 $row[0] 是从是从数据库得到的。则帖出 
    echo base64_encode($row[0]);
    的结果
      

  8.   


    <?php
    $id = $_GET["id"];
    $dbh =  mysql_connect('localhost:3306','root',''); 
    mysql_select_db('test'); 
    mysql_query("set names GB2312"); 
    $result = mysql_query("SELECT DISTINCT A.content,B.title,B.views FROM newscontent AS A INNER JOIN news AS B ON B.id=A.id AND A.classid=5 AND B.classid=5 AND A.id=".$id);while ($row = mysql_fetch_array($result))
    {
    echo "文档:".$row[1]."(阅读 ".$row[2]." 次)".$row[1]."";
    $restr = $row[0];
    $restr = str_replace("〇","0",$restr);
    echo $restr;
    }
    ?>
    echo base64_encode($row[0]) 这个的结果很长一串(大家先去吃饭吧...OTZ)