网络编程
位置:首页>> 网络编程>> php编程>> php实现HTML实体编号与非ASCII字符串相互转换类实例

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

作者:傲雪星枫  发布时间:2023-11-15 06:12:14 

标签:php,ascii,字符串

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

例如:

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

因工作需要,编写了一个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
?>

0
投稿

猜你喜欢

  • 本文实例讲述了python中尾递归用法。分享给大家供大家参考。具体分析如下:如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递
  • 1. 排序有什么用“排序”这个专业名词原本是来源于计算机程序操作中的,是一种很常见的算法设计,当然,对交互设计来说,探讨冒泡排序和堆排序之间
  • 很多时候我们写的程序,会花上一分钟甚至几分钟时间。为了使软件使用者能够耐心的等待程序的执行,我们经常会希望有一个进度条来表示程序执行的状态。
  • 背景 还是学院和专业的关系,我需要保持点击提交按钮后,页面select中继续维持提交前的值 网上有几种办法,要么通过url跳转时候附带参数形
  • SQL Server数据库的六个实用技巧:(一)挂起操作在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用
  • 视图(View)“视图”主要指我们送到Web浏览器的最终结果??比如我们的脚本生成的HTML。当说到视图时,很多人想到的是模版,但是把模板方
  • 我是从去年初开始学习web标准的,两年下来也有些心得。最近跳槽了正好闲在家里,写一些出来和大家交流一下。1对于web标准和W3C XHTML
  • 在域环境下我没配置成果,也许是域用户的原因,因为我在生产环境下搞的,更改域用户需要重启SQLServer ,所以这个方法放弃了,只能用证书形
  • MS SQL基本语法及实例操作 一:建表并初始化 ============================ create database
  • PS:这段时间有点不在状态,刚刚找回那个状态,那么我们继续曾经的梦想今天我们来补充一下文件的上传的几种方式:首先我们先补充的一个知识点:一、
  • 这可能是一个非常简单的问题,但是今天花一点点时间把这个简单的问题在说清晰一点,相信大家对CSS的学习和认识会很有帮助,强化一些概念的东西,对
  • asp之家补充两点,以让大家看的更明白:一.什么是GUID?由于水平有限在看到这篇文章时,我并不了解什么是GUID,为了看懂文章当然先请教一
  • 这是个郁闷的问题。主级获得ID列表 select ID from FS_SD_Address  where PID=0
  • 1.func Copy(dst Writer, src Reader) (written int64, err error)这个函数是从一个
  • 搜索引擎是通过分析网页源代码来分析页面文本信息的逻辑性,所以在编写网页代码的时候一定要尽可能使用合适的标签来体现文本表达的层次感,也即是让搜
  • 有些时候我们需要得到刚刚插入数据库中的条目id,用于相关系统的更改,在以前我是使用select+top 1+desc 这种笨方法实现的,在没
  • 即text-overflow:ellipsis,需要配合white-space:nowrap使用。运行代码:<div style=&q
  • 什么是死锁,在Go的协程里面死锁通常就是永久阻塞了,你拿着我的东西,要我先给你然后再给我,我拿着你的东西又让你先给我,不然就不给你。我俩都这
  • 首先我们知道这个效果应该是一个老话题了。今天整理文件的时候,发现自己以前的一些布局的解决方法躺在文件夹里很长时间了,翻翻老底吧。需要说明的是
  • 简介&emsp; 在现在的移动端App中,由于开发效率、需求频繁变更的需求情况下,经常有相关的运营需求,经常要进行更新,如果全部采用
手机版 网络编程 asp之家 www.aspxhome.com