比如这样的字符串
[td]For God\'s                 sake! [/td]
我把单引号转义了,存进数据库。显示文章的时候,发现文章都带有转义斜杠了。
而不转义直接保存进数据库,有些时候插入数据库会错误。这该怎么办呀?
//转换某些特殊字符
function format_html($str){
$str = str_replace('“', '“',$str);
$str = str_replace('”', '”',$str);
$str = str_replace('·', '·',$str);
$str = str_replace('‘', '‘',$str);
$str = str_replace('’', '’',$str);
$str = str_replace('…', '…', $str);
$str = str_replace('—;', '—', $str);
return $str;
}另外,php有内置函数的作用能达到我上面那个函数一样的效果吗?因为上面转的也不全完整。

解决方案 »

  1.   

    $str = "For God's sake!";
    //入库时
    ...INSERT INTO tb ... col = '".addslashes($str)."'...
    //输出时
    echo htmlspecialchars($str);
      

  2.   


    +++
    很久没弄PHP,居然把这个函数都忘记掉了
      

  3.   


    问题解决了。其实上面都是discuz的。discuz 2.5估计在入数据库之前自己进行转义了。因为我没发现他自己对帖子内容进行转义。而discuz 2.0在同一个地方断点,却发现代码转义了。好在问题已经解决了。大家说说有没有php的内置函数能达到下面的效果?我试了很多php的字符串处理函数。function format_html($str){
    $str = str_replace('“', '“',$str);
    $str = str_replace('”', '”',$str);
    $str = str_replace('·', '·',$str);
    $str = str_replace('‘', '‘',$str);
    $str = str_replace('’', '’',$str);
    $str = str_replace('…', '…', $str);
    $str = str_replace('—;', '—', $str);
    return $str;
    }
      

  4.   


    那php也太垃圾了吧,这种字符,估计有上百个。怎么可能转的完。