php 转换 html特殊符号

时间:2022-11-02 13:30:40
我写的函数

//转换某些特殊字符
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);
#源码
#&lt;div&gt;ab c&lt;/div&gt;
#页面
#<div>ab c</div>

#3


引用 2 楼  的回复:
PHP code

htmlspecialchars :

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



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

#4


引用 1 楼  的回复:
....亲不用这么转的 &amp;ldquo; 这种符号当网页不识别html语言是就会这么显示 如果页面时full html的话 就是“


我觉得还是需要转的,我查看discuz的html2bbcode函数,最末尾一行代码是

return preg_replace(['&nbsp;', '&lt;', '&gt;', '&amp;'], [' ', '<', '>', '&'], str);

可见,他还是自己转这些代码的。而且我发觉他们也偷懒了,转了常见的四个而已。我的html也是发在论坛的,也是用他这个函数处理,他们处理不全面,我还要替他们补充东西。倒是他的js把特殊符号都转换完毕了,也就是说,html经过js转换特殊字符之后,不必劳烦php转换,实在弄不明白。而我的代码直接通过php,不能用js。

#5


引用 4 楼  的回复:
引用 1 楼  的回复:

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


我觉得还是需要转的,我查看discuz的html2bbcode函数,最末尾一行代码是

return preg_replace(['&amp;nbsp;', '&amp;lt;', '&amp;gt;', ……


纠正一下,刚刚贴出的代码是他的js函数的,php函数也有转换,如下:

$strfind = array('&nbsp;', '&lt;', '&gt;', '&amp;');
$strreplace = array(' ', '<', '>', '&');
$text = str_replace($strfind, $strreplace, $text);

return htmlspecialchars(trim($text));

#1


....亲不用这么转的 &ldquo; 这种符号当网页不识别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


引用 2 楼  的回复:
PHP code

htmlspecialchars :

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



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

#4


引用 1 楼  的回复:
....亲不用这么转的 &amp;ldquo; 这种符号当网页不识别html语言是就会这么显示 如果页面时full html的话 就是“


我觉得还是需要转的,我查看discuz的html2bbcode函数,最末尾一行代码是

return preg_replace(['&nbsp;', '&lt;', '&gt;', '&amp;'], [' ', '<', '>', '&'], str);

可见,他还是自己转这些代码的。而且我发觉他们也偷懒了,转了常见的四个而已。我的html也是发在论坛的,也是用他这个函数处理,他们处理不全面,我还要替他们补充东西。倒是他的js把特殊符号都转换完毕了,也就是说,html经过js转换特殊字符之后,不必劳烦php转换,实在弄不明白。而我的代码直接通过php,不能用js。

#5


引用 4 楼  的回复:
引用 1 楼  的回复:

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


我觉得还是需要转的,我查看discuz的html2bbcode函数,最末尾一行代码是

return preg_replace(['&amp;nbsp;', '&amp;lt;', '&amp;gt;', ……


纠正一下,刚刚贴出的代码是他的js函数的,php函数也有转换,如下:

$strfind = array('&nbsp;', '&lt;', '&gt;', '&amp;');
$strreplace = array(' ', '<', '>', '&');
$text = str_replace($strfind, $strreplace, $text);

return htmlspecialchars(trim($text));