首頁  >  文章  >  後端開發  >  php 實作HTML實體編號與非ASCII字串相互轉換類

php 實作HTML實體編號與非ASCII字串相互轉換類

jacklove
jacklove原創
2018-06-08 23:08:272347瀏覽

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 = &#39;UTF-8&#39;;    /**
     * 字符串转为HTML实体编号
     * @param  String $str      字符串
     * @param  String $encoding 编码
     * @return String
     */
    public static function encode($str, $encoding=&#39;UTF-8&#39;){
        self::$_encoding = $encoding;        return preg_replace_callback(&#39;|[^\x00-\x7F]+|&#39;, array(__CLASS__, &#39;_convertToHtmlEntities&#39;), $str);
    }    /**
     * HTML实体编号转为字符串
     * @param  String $str      HTML实体编号字符串
     * @param  String $encoding 编码
     * @return String
     */
    public static function decode($str, $encoding=&#39;UTF-8&#39;){
        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, &#39;UCS-2BE&#39;, $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 &#39;HtmlEntitie.class.php&#39;;$str = &#39;<p>更多资讯可关注本人微信号:fdipzone-idea</p><p><img  border="0" src="https://img-blog.csdn.net/20141224160911852"    style="max-width:90%"  style="max-width:90%" title="破晓领域" alt="php 實作HTML實體編號與非ASCII字串相互轉換類" ></p><p>您的支持是我最大的动力,谢谢!</p>&#39;;// 字符串转为HTML实体编号$cstr = HtmlEntitie::encode($str);echo &#39;字符串转为HTML实体编号&#39;.PHP_EOL;echo $cstr.PHP_EOL.PHP_EOL;// HTML实体编号转为字符串echo &#39;HTML实体编号转为字符串&#39;.PHP_EOL;echo HtmlEntitie::decode($cstr);?>

輸出:


php 實作HTML實體編號與非ASCII字串相互轉換類



字符串转为HTML实体编号<p>更多资讯可关注本人微信号:fdipzone-idea</p><p><img  alt="php 實作HTML實體編號與非ASCII字串相互轉換類" ></p><p>您的支持是我最大的动力,谢谢!</p>HTML实体编号转为字符串<p>更多资讯可关注本人微信号:fdipzone-idea</p><p><img  alt="php 實作HTML實體編號與非ASCII字串相互轉換類" ></p><p>您的支持是我最大的动力,谢谢!</p>

兩種都可以在瀏覽器正常顯示,如下圖:

#本文講解了php 實作HTML實體編號與非ASCII字串相互轉換類的相關知識,更多相關內容請關注php中文網。
相關推薦:

###php 根據自增id建立唯一編號類別################關於mysql 查看目前使用的設定檔my.cnf的方法講解###############如何透過mysql 判斷點是否在指定多邊形區域內#########

以上是php 實作HTML實體編號與非ASCII字串相互轉換類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn