今天在写一个PHP脚本访问数据库时,发现其中的中文字符串使用了HTML编码方式进行存储的(比如中文字“毛”对应的HTML编码为“毛”),使得在对该字段进行条件查询时不能进接使用中文进行查询,而要将其转换为编码后再进行条件匹配。
PHP中对可读性字符与HTML编码字符相互转换时需要使用到htmlentities和html_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.="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&<Frau>&Krämer";
$original=strtr($encoded,$trans);
echo$original;
?>
$trans=get_html_translation_table(HTML_ENTITIES);
$trans=array_flip($trans);
$encoded="Hallo&<Frau>&Krämer";
$original=strtr($encoded,$trans);
echo$original;
?>
执行这段代码,输出的$original变量值为“Hallo & <Frau> & Krämer”,这正是我想要的结果。
以上是我在工作中遇到的问题及解决方法,特将其写在我的Blog上,与那些遇到和我相似问题的朋友们一起分享。
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
Chop 函数将字符串中的连续空白字符去除,以便于后续的字符串处理操作。 4. Chr: 返回序数值的字符 Chr 函数将序数值转换成对应的 ASCII 字符。例如,Chr(65) 将返回字符 "A"。 5. chunk_split: 将字符串分成小段...
在PHP编程中,有时我们需要对过长的字符串进行截断,以便在有限的空间内展示关键信息,例如在网页上显示文章摘要或者处理数据库查询结果。本文将深入探讨PHP中的字符串截断方法,并针对性能和效率进行优化。 1. **...
本实验报告围绕“PHP网站编程技术-字符串处理”展开,涵盖了字符串的反转、编码识别、长度计算、字符截取、比较以及HTML标签处理等多个方面。 首先,使用`header()`函数设置浏览器页面的编码格式为`utf-8`,确保...
### PHP字符串函数分类详解 #### 一、统计(Statistics) 在处理字符串时,我们经常会遇到需要统计...以上是对PHP中常用字符串处理函数的一个全面介绍,希望这些信息能够帮助你在实际项目中更加高效地处理字符串。
在PHP编程语言中,字符串处理是一项非常常见的任务。"php通用截取字符串"这个主题主要涉及如何在PHP中对字符串进行截取,以便获取我们感兴趣的特定部分。这通常用于显示预览、处理用户输入或者从长文本中提取关键...
使用这个类库时,开发者可以创建类的实例,然后调用`convertToHtmlEntities()`方法对用户输入或需要编码的字符串进行处理,如: ```php $encoder = new HtmlEntitiesConverter(); $safeString = $encoder->...
字符串处理包括对字符串的各种操作,如转义、编码转换、替换等。正则表达式则是一种强大的文本匹配工具,它允许我们在字符串中搜索、匹配和提取特定的文本模式。 ### 字符串处理 PHP提供了丰富的字符串处理函数,...
在PHP编程中,字符串处理是常见的任务之一,尤其是在数据过滤和清理方面。本文将深入探讨PHP中的字符串过滤方法,帮助开发者有效地处理和确保数据的安全性。 首先,让我们了解字符串过滤的基本概念。字符串过滤通常...
在编程领域,字符串处理是...总结起来,PHP和JavaScript都提供了丰富的字符串处理函数,用于数据安全、编码、解码和格式化。理解并熟练运用这些函数,能够帮助开发者更好地处理和操作字符串,提升代码的安全性和效率。
2. PHP的字符串处理函数:如`mb_substr()`、`ord()`和`chr()`等,它们在处理多字节字符时非常有用。 3. PHP的类库和包管理:如Composer,它是PHP的依赖管理工具,可以帮助引入和管理外部库。 4. 汉字拼音转换算法:...
在PHP编程语言中,字符串函数是处理文本数据的关键工具,它们提供了丰富的功能来操作和分析字符串。以下是对标题“PHP中的字符串函数”及其描述中提到的一些重要知识点的详细解析: ### 1. 字符串转义与解码 - **...
### 如何使用PHP中的字符串函数 #### 一、输出字符串函数:`echo`, `print`, `...以上就是PHP中常用的一些字符串处理函数及其用法详解。通过这些函数,我们可以更加灵活高效地处理字符串,从而实现各种功能需求。
在IT领域,字符串编码是处理文本数据时至关重要的一个环节。UTF-8是一种广泛使用的Unicode字符编码方案,它能够表示几乎所有的世界语言字符。在这个场景中,"以utf8格式截取的字符串编码"指的是在处理UTF-8编码的...
PHP是一种广泛用于网站开发的服务器端脚本语言,而字符串处理是它的一项核心功能。本文将详细介绍PHP中一些常用字符串函数的使用方法,并通过实例进行解释。 1. 字符串分割函数:explode() 和 implode() explode() ...
在实际应用中,根据不同的需求选择合适的字符串处理函数,可以有效地帮助开发人员提高编码效率,保证程序的稳定性和安全性。例如,对于用户输入的数据处理,常常需要用到strip_tags()来去除可能存在的恶意代码,使用...
以上只是PHP字符串处理的一小部分知识,实际开发中还有更多高级特性和函数,如字符串搜索和替换、字符串比较、编码转换等。理解并熟练运用这些功能,能帮助开发者高效地处理各种字符串任务。在进行PHP开发时,结合...
2. PHP字符串处理技巧:学习如何在PHP中使用内置函数操作字符串,包括提取特定格式的数据、编码和解码字符串。 3. PHP文件读写操作:掌握如何在PHP中使用文件操作函数来创建和写入文件,包括设置文件权限和处理文件...
utf8字符串与unicode的相互转换。 在utf8编码的网页上输入字符串后, 可产生unicode编码字符串, 然后再还原回原先的utf8字符串。html/PHP实现。
总结来说,`json_decode()`解析JSON字符串返回NULL的问题往往与编码格式有关。在接收到JSON数据后,首先使用`html_entity_decode()`函数对HTML实体进行转换,然后用`stripslashes()`去除不必要的转义字符。通过这两...