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

5年以前  |  阅读数:294 次  |  编程语言:PHP 

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

例如:

因工作需要,编写了一个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("&#
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例