`
禹爸爸
  • 浏览: 79933 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

PHP对HTML编码字符串的处理

    博客分类:
  • PHP
php 
阅读更多

今天在写一个PHP脚本访问数据库时,发现其中的中文字符串使用了HTML编码方式进行存储的(比如中文字“毛”对应的HTML编码为“毛”),使得在对该字段进行条件查询时不能进接使用中文进行查询,而要将其转换为编码后再进行条件匹配。

PHP中对可读性字符与HTML编码字符相互转换时需要使用到htmlentitieshtml_entity_decode函数。于是写出如下查询语句,

$sql="selectid,depart_name,first_name,last_name,local_name,extension,mobile,title ";
$sql.="frompb_extensione,pb_departmentd ";
$sql.="wheree.depart_id=d.depart_id ";
$sql.="andd.plant='".$plant."' ";
$sql.="and(first_namelike'%".$HTTP_POST_VARS["q"]."%'";
$sql.="orlast_namelike'%".$HTTP_POST_VARS["q"]."%'";
$sql.="orlocal_namelike'%".htmlentities($HTTP_POST_VARS["q"])."%'";
$sql.="orextensionlike'%".$HTTP_POST_VARS["q"]."%'";
$sql.="ormobilelike'%".$HTTP_POST_VARS["q"]."%'";
$sql.="ordepart_namelike'%".$HTTP_POST_VARS["q"]."%'";
$sql.="ortitlelike'%".$HTTP_POST_VARS["q"]."%'";
$sql.=") ";

并执行。可是怪是却发生了,此语句在SQL Analyzer中可以正确执行并查询出结果,而在IE中很执行这段脚本却提示查询结果为零,这是为什么呢?

经过仔细检查这段SQL,并查看在IE中的源码,发现了问题的根结所在。查询值经htmlentities函数后转换为HTML编码,此编码中存在着特殊字符&(如第一段中的举例),在IE中这个字符是另有含义的。在IE中一般都是使用“&”来表示这个符号的,导致在IE中看到输出的SQL语句和真正执行的语句是不一样的。

要解决这个问题就要想个办法不让IE使用“&”表示“&”符号。经过一翻查询,发现使用如下代码可以解决这个问题。

<?php
$trans=get_html_translation_table(HTML_ENTITIES);
$trans=array_flip($trans);
$encoded="Hallo&amp;&lt;Frau&gt;&amp;Kr&auml;mer";
$original=strtr($encoded,$trans);
echo$original;
?>

执行这段代码,输出的$original变量值为“Hallo & <Frau> & Krämer”,这正是我想要的结果。

以上是我在工作中遇到的问题及解决方法,特将其写在我的Blog上,与那些遇到和我相似问题的朋友们一起分享。

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    php将字符串转为HTML的实体类.zip

    php中将字符串转为HTML的实体引用的一个类,将非ASCII字符串转换成HTML实体,要进行编码的字符串,返回HTML实体引用。

    php常用字符串处理函数实例分析

    本文实例讲述了php常用字符串处理函数。分享给大家供大家参考。具体分析如下: 这里只提供几个简单常用的函数: chop执行去除空格处理,get_html_translation_table返回转化列表到变量,定义包括HTML编码的字符串...

    php网页utf8字符串与unicode互转

    utf8字符串与unicode的相互转换。 在utf8编码的网页上输入字符串后, 可产生unicode编码字符串, 然后再还原回原先的utf8字符串。html/PHP实现。

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    StringBuilderApplication/DealWithStringBuilder.aspx 动态字符串处理 第9章(/09/) RegexApplication/Default.aspx 正则表达式类的应用 RegexApplication/GetPageHtmlData.aspx 获取网页的内容 ...

    邓超的任务书和开题报告

    很好1、 试创建一个表单,在表单中添加各个常用元素,并为表单元素命名...5、 开发一个页面,实现对GET方法传递的参数进行编码,然后对编码的字符串进行解码并输出。 开发一个注册页面input.html,新建一个regist.php页

    php中将字符串转为HTML的实体引用的一个类

    复制代码 代码如下:class HtmlEncode {  static $_convertToHtmlEntitiesSrcEncoding=’UTF-8′;... //输出:我信了 * @param string $s 要进行编码的字符串 * @return string 返回HTML实体引用 */ public static

    批量字符编码转换工具 20070709

    1 支持格式众多的字符串编码转换器 支持几十种字符编码转换。比如utf8转gbk,gb2312转utf8,ansi转utf8,utf8 unicode 转换,utf8转换gb2312,utf16、utf32、utf8编码转换,gbk转换utf8,utf8 ascii转换。 2 强大正则...

    编码批量转换工具

    1 支持格式众多的字符串编码转换器 支持几十种字符编码转换。比如utf8转gbk,gb2312转utf8,ansi转utf8,utf8 unicode 转换,utf8转换gb2312,utf16、utf32、utf8编码转换,gbk转换utf8,utf8 ascii转换。 2 强大正则...

    完美的2个php检测字符串是否是utf-8编码函数分享

    在php开发中有时候会用到转码函数,比如iconv(),mb_convert_encoding()函数,在用函数转码的时候或者解码的时候我们有时候需要先判断当前字符串编码类型,不如是否是utf-8编码,是的话然后进行编码转换等操作。...

    php 截取utf-8格式的字符串实例代码

    php 截取utf-8格式的字符串 php中,我们经常需要截取字符串。英文字符占用一个字节,中文字符占用两个字节,但中文字符占用两个字节是相对于GBK编码而言但是在时下国际流行的UTF8编码中,一个中文字符占用3个字节。...

    VSCodeXssEncode:使用转换将字符从一种编码转换为另一种编码。 该工具将帮助您在测试SQL注入,XSS漏洞和站点安全性时对有效负载进行编码

    xssencode 使用转换将字符从一种编码转换为另一种编码。 该工具将帮助您在测试SQL注入,XSS漏洞和站点安全性时对有效负载进行编码... 字符串=&gt; PHP CHR(十进制十进制,八进制八进制,十六进制十六进制) 字符串=&gt; P

    php变量与字符串的增删改查操作示例

    本文实例讲述了php变量与字符串的增删改查操作。分享给大家供大家参考,具体如下: 变量的使用 &lt;?php //告诉浏览器以什么编码方式解析什么类型的文档,防止中文乱码 header("Content-type: text/html; charset=...

    php mb_substr()函数截取中文字符串应用示例

    substr()函数用来截取字符串,但是对于中文字符会出现问题,而mb_substr()和mb_strcut这两个函数可以,用法与substr()相似,只是在函数最后要加入多一个参数,以设定字符串的编码,使用这两个函数需要在php.ini...

    中英文字符串翻转函数

    php //页面编码设为utf8 header(‘Content-type: text/html; charset=utf-8’); $luokuan = “ABCDEFG-测试的啊-!!!一二三四五。。”; $n = mb_strlen(“$luokuan”,”UTF-8″); //echo $n; $newluokuan = “”; for...

    java/ap/php解密查找替换工具

    4.对成对的特征字符串之间的字符提取功能的实现 可以提取批量的符合要求的指定特征字符串之间的 文字例如C程序中的/**/注释 5.提取方式可以选择,分为包括特征字符串和不包 括特征字符串,并且提取的文本可以进行...

    PHP程序开发范例宝典III

    术、SQL查询相关技术、MySQL高级应用技术、字符串的处理技术、PHP面向对象编程技术、文件管理、图像和多媒体技术、信息提取与图表分析 技术、报表与打印技术、网络通信技术、PHP与XML技术、安全技术、PHP高级应用...

    PHP网络编程技术与实践 源码

    2.3 PHP的字符串处理 2.3.1 字符串的分割与截取 2.3.2 字符串的加密 2.3.3 字符串比较 2.3.4 字符串的转义 2.3.5 字符串的格式化 2.4 PHP的日期时间处理 2.4.1 时间与日期的显示操作 2.4.2 时间与日期的格式化输出 ...

    PHP HTML代码串 截取实现代码

    将一段文字截取一定的物理长度显示,注意,要截取的不是字符串的字节数,UFT-8 的编码中文字符是3个字节或者4个字节的,而显示的时候中文会占两个字符的长度,英文字符只占一个,全角的时候又有不同。

    php中url传递中文字符,特殊危险字符的解决方法

    把这些文本字符串传给url之前,先进行urlencode($text)一下; 但是对于一些很“危险”的字符,比如说html字符,甚至是SQL注入相关的字符,如果很明显的传给系统,出于安全考虑,系统一般都会把它们过滤掉的。 现在,...

Global site tag (gtag.js) - Google Analytics