您的位置:首页 > 编程语言 > PHP开发

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

2016-11-02 16:54 786 查看

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("%s;", $code);
}
}
} // class end
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php ascii 字符串