//转换某些特殊字符
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个。这么多,怎么可能转的完,有没有什么方法?
5 个解决方案
#1
....亲不用这么转的 “ 这种符号当网页不识别html语言是就会这么显示 如果页面时full html的话 就是“
#2
htmlspecialchars :
$htm = "<div>ab c</div>";
echo htmlspecialchars($htm);
#源码
#<div>ab c</div>
#页面
#<div>ab c</div>
#3
<?
$str = '‘';
echo htmlspecialchars($str);
?>
输出 ‘
查看源码:
&lsquo;
#4
我觉得还是需要转的,我查看discuz的html2bbcode函数,最末尾一行代码是
return preg_replace([' ', '<', '>', '&'], [' ', '<', '>', '&'], str);
可见,他还是自己转这些代码的。而且我发觉他们也偷懒了,转了常见的四个而已。我的html也是发在论坛的,也是用他这个函数处理,他们处理不全面,我还要替他们补充东西。倒是他的js把特殊符号都转换完毕了,也就是说,html经过js转换特殊字符之后,不必劳烦php转换,实在弄不明白。而我的代码直接通过php,不能用js。
#5
纠正一下,刚刚贴出的代码是他的js函数的,php函数也有转换,如下:
$strfind = array(' ', '<', '>', '&');
$strreplace = array(' ', '<', '>', '&');
$text = str_replace($strfind, $strreplace, $text);
return htmlspecialchars(trim($text));
#1
....亲不用这么转的 “ 这种符号当网页不识别html语言是就会这么显示 如果页面时full html的话 就是“
#2
htmlspecialchars :
$htm = "<div>ab c</div>";
echo htmlspecialchars($htm);
#源码
#<div>ab c</div>
#页面
#<div>ab c</div>
#3
<?
$str = '‘';
echo htmlspecialchars($str);
?>
输出 ‘
查看源码:
&lsquo;
#4
我觉得还是需要转的,我查看discuz的html2bbcode函数,最末尾一行代码是
return preg_replace([' ', '<', '>', '&'], [' ', '<', '>', '&'], str);
可见,他还是自己转这些代码的。而且我发觉他们也偷懒了,转了常见的四个而已。我的html也是发在论坛的,也是用他这个函数处理,他们处理不全面,我还要替他们补充东西。倒是他的js把特殊符号都转换完毕了,也就是说,html经过js转换特殊字符之后,不必劳烦php转换,实在弄不明白。而我的代码直接通过php,不能用js。
#5
纠正一下,刚刚贴出的代码是他的js函数的,php函数也有转换,如下:
$strfind = array(' ', '<', '>', '&');
$strreplace = array(' ', '<', '>', '&');
$text = str_replace($strfind, $strreplace, $text);
return htmlspecialchars(trim($text));