我写的函数//转换某些特殊字符
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;
}但是这些符号实在是太多了。网上说的,大概255个。这么多,怎么可能转的完,有没有什么方法?

解决方案 »

  1.   

    ....亲不用这么转的 “ 这种符号当网页不识别html语言是就会这么显示 如果页面时full html的话 就是“
      

  2.   


    htmlspecialchars :$htm = "<div>ab c</div>";
    echo htmlspecialchars($htm);
    #源码
    #&lt;div&gt;ab c&lt;/div&gt;
    #页面
    #<div>ab c</div>
      

  3.   

    <?
    $str = '&lsquo;';
    echo htmlspecialchars($str);
    ?>
    输出 &lsquo;
    查看源码:
    &amp;lsquo;
      

  4.   


    我觉得还是需要转的,我查看discuz的html2bbcode函数,最末尾一行代码是return preg_replace(['&nbsp;', '&lt;', '&gt;', '&amp;'], [' ', '<', '>', '&'], str);可见,他还是自己转这些代码的。而且我发觉他们也偷懒了,转了常见的四个而已。我的html也是发在论坛的,也是用他这个函数处理,他们处理不全面,我还要替他们补充东西。倒是他的js把特殊符号都转换完毕了,也就是说,html经过js转换特殊字符之后,不必劳烦php转换,实在弄不明白。而我的代码直接通过php,不能用js。
      

  5.   


    纠正一下,刚刚贴出的代码是他的js函数的,php函数也有转换,如下: $strfind = array('&nbsp;', '&lt;', '&gt;', '&amp;');
    $strreplace = array(' ', '<', '>', '&');
    $text = str_replace($strfind, $strreplace, $text); return htmlspecialchars(trim($text));