php 实现HTML实体编号与非ASCII字符串相互转换类

jacklove
发布: 2018-06-08 23:08:27
原创
2488人浏览过

HTML实体符号被用作实现保留字符(reserved characters)或者表达键盘无法输入的一些常用字符。在大多数浏览器中默认的字符集为ISO-8859-1。HTML实体符号我们在网页设计中经常用到。

例如:

字符 实体名称 实体编号  描述
&   &   &   and符号,与
"   "  "   引号
©   ©  ©  版权标志
®   ®   »  注册标志
™   ™ ™  商标标志
“   “ “  左双引号
”   ” ”  右双引号
‘   ‘ ‘  做单引号
’   ’ ’  右单引号
登录后复制

因工作需要,编写了一个HTML实体编号与非ASCII字符串相互转换类,代码如下:

HtmlEntitie.class.php

<?php/**
 *  HTML实体编号与非ASCII字符串相互转换类
 *  Date:   2016-09-07
 *  Author: fdipzone
 *  Ver:    1.0
 *
 *  Func:
 *  public  encode 字符串转为HTML实体编号
 *  public  decode HTML实体编号转为字符串
 *  private _convertToHtmlEntities 转换为HTML实体编号处理
 */class HtmlEntitie{ // class start
    public static $_encoding = 'UTF-8';    /**
     * 字符串转为HTML实体编号
     * @param  String $str      字符串
     * @param  String $encoding 编码
     * @return String
     */
    public static function encode($str, $encoding='UTF-8'){
        self::$_encoding = $encoding;        return preg_replace_callback('|[^\x00-\x7F]+|', array(__CLASS__, '_convertToHtmlEntities'), $str);
    }    /**
     * HTML实体编号转为字符串
     * @param  String $str      HTML实体编号字符串
     * @param  String $encoding 编码
     * @return String
     */
    public static function decode($str, $encoding='UTF-8'){
        return html_entity_decode($str, null, $encoding);
    }    /**
     * 转换为HTML实体编号处理
     * @param Mixed  $data 待处理的数据
     * @param String
     */
    private static function _convertToHtmlEntities($data){
        if(is_array($data)){            $chars = str_split(iconv(self::$_encoding, 'UCS-2BE', $data[0]), 2);            $chars = array_map(array(__CLASS__, __FUNCTION__), $chars);            return implode("", $chars);
        }else{            $code = hexdec(sprintf("%02s%02s;", dechex(ord($data {0})), dechex(ord($data {1})) ));            return sprintf("&#%s;", $code);
        }
    }
} // class end?>
登录后复制

demo.php

<?phprequire 'HtmlEntitie.class.php';$str = '<p>更多资讯可关注本人微信号:fdipzone-idea</p><p>@@##@@</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p><p>您的支持是我最大的动力,谢谢!</p>';// 字符串转为HTML实体编号$cstr = HtmlEntitie::encode($str);echo '字符串转为HTML实体编号'.PHP_EOL;echo $cstr.PHP_EOL.PHP_EOL;// HTML实体编号转为字符串echo 'HTML实体编号转为字符串'.PHP_EOL;echo HtmlEntitie::decode($cstr);?>
登录后复制

输出:

字符串转为HTML实体编号<p>&#26356;&#22810;&#36164;&#35759;&#21487;&#20851;&#27880;&#26412;&#20154;&#24494;&#20449;&#21495;&#65306;fdipzone-idea</p><p>@@##@@</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p><p>&#24744;&#30340;&#25903;&#25345;&#26159;&#25105;&#26368;&#22823;&#30340;&#21160;&#21147;&#65292;&#35874;&#35874;&#65281;</p>HTML实体编号转为字符串<p>更多资讯可关注本人微信号:fdipzone-idea</p><p>@@##@@</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p><p>您的支持是我最大的动力,谢谢!</p>
登录后复制


两种都可以在浏览器正常显示,如下图:

php 实现HTML实体编号与非ASCII字符串相互转换类

本文讲解了php 实现HTML实体编号与非ASCII字符串相互转换类的相关知识,更多相关内容请关注php中文网。

相关推荐:
php 根据自增id创建唯一编号类

关于mysql 查看当前使用的配置文件my.cnf的方法讲解

如何通过mysql 判断点是否在指定多边形区域内

php 实现HTML实体编号与非ASCII字符串相互转换类php 实现HTML实体编号与非ASCII字符串相互转换类这里写图片描述

以上就是php 实现HTML实体编号与非ASCII字符串相互转换类的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号