关于html_entity_decode、空格 以及乱码_html/css_WEB-ITnose

WBOY
Release: 2016-06-24 11:18:57
Original
1338 people have browsed it

普通ASCII码空格为32,但是浏览器会对普通空格进行自动归并,

也就是如果你输入10个0x20的空格在HTML页面里面,可能会被合并成一个空格。

如果想要一致的呈现多个空格,就要用到 ,这个空格的编码为160,为西欧ISO-8859-1编码标准。


为了让经过HTML编码的内容还原为原来的文本字符,可以使用html_entity_decode方法,

但这样问题就来了,通常HTML编码内容为UTF8格式的,html_entity_decode在浏览器UTF8编码环境下会把

 转为一个黑色四方形状的乱码。只有切换为ISO-8859-1才能正确显示为空格。


所以在使用html_entity_decode之前,需要先把 替换掉(str_replace),这样就可以避免乱码问题。

示例:

对下面这段字符串直接进行HTML解码后,会出现乱码的问题:

$str = '真爱粉们,当时活动的一些精选片段吧~ 
<';$content = html_entity_decode($str);print_r($content );
Copy after login


结果:

先将空格替换掉,然后再应用html_entity_decode解码后,就不会出现问题了。

$str = '真爱粉们,当时活动的一些精选片段吧~ 
<'; // 替换空隔符 $content = str_replace(" ","[space_code]",$str); $content = html_entity_decode( $content ); // 转换之后,再将空格符替换回来 $content = str_replace("[space_code]"," ",$content); print_r($content );
Copy after login


还有一种简单的方法,htmlspecialchars_decode( )不用转换空格就可以转化并且不出现乱码:

$str = '真爱粉们,当时活动的一些精选片段吧~ 
<'; $content = htmlspecialchars_decode($str);
Copy after login


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!