时间:2021-07-01 10:21:17 帮助过:110人阅读
今天遇到一个挺有趣的字符编码转义,通过HTML的Textarea表单JQuery Ajax POST内容到PHP,然后存储到MySQL数据库,然后Ajax根据POST 的 DATA 回显,如果刷新页面,通过PHP 输出MySQL 存储的编码; 首先引用一下转义字符串的基础知识。 转义字符串 基本知识 转
今天遇到一个挺有趣的字符编码转义,通过HTML的Textarea表单JQuery Ajax POST内容到PHP,然后存储到MySQL数据库,然后Ajax根据POST 的 DATA 回显,如果刷新页面,通过PHP 输出MySQL 存储的编码;
首先引用一下转义字符串的基础知识。
转义字符串(Escape Sequence),即字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。
比如,要显示小于号(<),就可以写 < 或者 < 。
用实体(Entity)名字的好处是比较好理解,一看lt,大概就猜出是less than的意思,但是其劣势在于并不是所有的浏览器都支持最新的Entity名字。而实体(Entity)编号,各种浏览器都能处理。
提示:实体名称(Entity)是区分大小写的。 同一个符号,可以用“实体名称”和“实体编号”两种方式引用,“实体名称”的优势在于便于记忆,但不能保证所有的浏览器都能顺利识别它,而“实体编号”则没有这种担忧,但它实在不方便记忆。
定义一个函数decodeEntities将HTML字符编码 转换到 特殊字符:
function decodeEntities(s){
var str, temp= document.createElement(‘p’);
temp.innerHTML= s;
str= temp.textContent || temp.innerText;
temp=null;
return str;
}
这个函数,将会把' & 等直接转换为’ (单引号) 和 &
比如 you appreciate the driver's consideration , & 就会变成 you appreciate the driver’s consideration , &
PHP 默认有函数将 HTML字符编码 转换到 特殊字符
html_entity_decode (PHP 4 >= 4.3.0, PHP 5)
string html_entity_decode ( string $string
[, int $flags
= ENT_COMPAT | ENT_HTML401 [, string $encoding
= 'UTF-8' ]] )
html_entity_decode — Convert all HTML entities to their applicable characters (转换所有的HTML字符编码到对应的特殊字符串)
注意这个函数的参数ENT_COMPAT 默认会转换双引号,不会转换单引号;
为了能够同时转换单引号和双引号,需要使用 int $flags = ENT_QUOTES
通过以下的这段PHP处理数据库中的值:
html_entity_decode($node->body, ENT_QUOTES | ENT_HTML401)
这个函数,将会把' & 等直接转换为’ (单引号) 和 &
比如 you appreciate the driver's consideration , & 就会变成 you appreciate the driver’s consideration , &
假设在HTML文本框中输入这三行内容:
you appreciate the driver's consideration , &
you appreciate the driver's consideration , &
you appreciate the driver’s consideration , &
如下图:
点击“确定”按钮后,执行JQuery Ajax Post 操作 通过PHP插入到数据库;
(...)
Read the rest of HTML字符编码JS和PHP 转义 (108 words)
© lixiphp for LixiPHP, 2013. |
Permalink |
No comment |
Add to
del.icio.us
Post tags: html, JQuery, js, MySQL, PHP, 字符编码, 转义
Feed enhanced by Better Feed from Ozh