htmlspecialchars_decode 与 html_entity_decode
数据库的数据如果存的是实体的话,读取显示的时候就需要用到这两个函数,但是html_entity_decode函数有解析乱码的时候,而且用这个函数的时候还需要指定编码类型。所以就用htmlspecialchars_decode这个好了 。可是这两个有什么区别呢?
html_entity_decode
(PHP 4 >= 4.3.0, PHP 5)
html_entity_decode — Convert all HTML entities to their applicable characters
htmlspecialchars_decode
(PHP 5 >= 5.1.0)
htmlspecialchars_decode — Convert special HTML entities back to characters
名称 | html_entity_decode | htmlspecialchars_decode |
定义 | Convert all HTML entities to their applicable characters | Convert special HTML entities back to characters |
使用版本 | (PHP 4 >= 4.3.0, PHP 5) | (PHP 5 >= 5.1.0) |
参数 | ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [,string $encoding = 'UTF-8' ]] ) |
( string $string [, int$flags = ENT_COMPAT | ENT_HTML401 ] ) |
======================================================================================
From the PHP documentation for htmlentities:
This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.
From the PHP documentation for htmlspecialchars:
Certain characters have special significance in HTML, and should be represented by HTML entities if they are to preserve their meanings. This function returns a string with some of these conversions made; the translations made are those most useful for everyday web programming. If you require all HTML character entities to be translated, use htmlentities() instead.
The difference is what gets encoded. The choices are everything (entities) or "special" characters, like ampersand, double and single quotes, less than, and greater than (specialchars).
I prefer to use htmlspecialchars whenever possible.
结论是,有中文的时候,最好用 htmlspecialchars ,否则可能乱码。