html实体转换


摘要:

  在 HTML 中,某些字符是预留的。在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体。如需显示小于号,我们必须这样写:< 或 <

  HTML 中的常用字符实体是不间断空格( )。浏览器总是会截短 HTML 页面中的空格。如果您在文本中写 10 个空格,在显示该页面之前,浏览器会删除它们中的 9 个。如需在页面中增加空格的数量,您需要使用   字符实体。

实体列表:

  下面列出了常用的实体对照表

显示结果描述实体名称实体编号
  空格    
< 小于号 < <
> 大于号 > >
& 和号 & &
" 引号 " "
¢ ¢
£ £
日圆 ¥ ¥
欧元
§ 小节 § §
? 版权 © ©
? 注册商标 ® ®
? 商标
× 乘号 × ×
÷ 除号 ÷ ÷

实体转换:

  有时候我们需要在js里处理DOM,但是实体只有当浏览器渲染页面时才会转换对应的字符。所以我们就得自己写一个实体转换函数。如下:

function unescapeEntity(str) {
        var reg = /&(?:nbsp|#160|lt|#60|gt|62|amp|#38|quot|#34|cent|#162|pound|#163|yen|#165|euro|#8364|sect|#167|copy|#169|reg|#174|trade|#8482|times|#215|divide|#247);/g,
            entity = {
            ' '   : ' ',
            ' '   : ' ',
            '<'     : '<',
            '<'    : '<',
            '>'     : '>',
            '&62;'     : '>',
            '&'    : '&',
            '&'    : '&',
            '"'   : '"',
            '"'    : '"',
            '¢'   : '¢',
            '¢'   : '¢',
            '£'  : '£',
            '£'   : '£',
            '¥'    : '¥',
            '¥'   : '¥',
            '€'   : '€',
            '€'  : '€',
            '§'   : '§',
            '§'   : '§',
            '©'   : '?',
            '©'   : '?',
            '®'    : '?',
            '®'   : '?',
            '™'  : '?',
            '™'  : '?',
            '×'  : '×',
            '×'   : '×',
            '÷' : '÷',
            '÷'   : '÷'
        };
        if (str === null) {
            return '';
        }
        str = str.toString();
        return str.indexOf(';') < 0 ? str : str.replace(reg, function(chars) {
            return entity[chars];
        });
    }

小结:

  使用实体名而不是数字的好处是,名称易于记忆。不过坏处是,浏览器也许并不支持所有实体名称(对实体数字的支持却很好)。