php 中htmlentities导致中文无法查询问题

在php中htmlspecialchars, 将特殊字元转成 HTML 格式,而htmlentities,将所有的字元都转成 HTML 字串 了,下面我来分别简单的介绍。

htmlentities用法

 $str = "John & 'Adams'";
 echo htmlentities($str, ENT_COMPAT);
 echo "
 ";
 echo htmlentities($str, ENT_QUOTES);
 echo "
 ";
 echo htmlentities($str, ENT_NOQUOTES);
 ?> 

John & 'Adams'
 John & 'Adams'
 John & 'Adams'

浏览器输出:

htmlspecialchars用法

& (和) 转成 &
 " (双引号) 转成 "
 < (小于) 转成 <
 > (大于) 转成 >

$str = "John & 'Adams'";
 echo htmlspecialchars($str, ENT_COMPAT);
 echo "
 ";
 echo htmlspecialchars($str, ENT_QUOTES);
 echo "
 ";
 echo htmlspecialchars($str, ENT_NOQUOTES);
 ?>  

他们的区别

这两个函数的功能都是转换字符为HTML字符编码,特别是url和代码字符串。防止字符标记被浏览器执行。使用中文时没什么区别,但htmlentities会格式化中文字符使得中文输入是乱码

htmlentities转换所有的html标记,htmlspecialchars只格式化& ' " < 和 > 这几个特殊符号

效果:

$str = '<a href="demo.php?m=index&a=index&name=中文" rel="external nofollow" rel="external nofollow" >测试页面</a>';

echo 'htmlentities指定GB2312编码:'.htmlentities($str,ENT_COMPAT,"GB2312").'';

echo 'htmlentities未指定编码:'.htmlentities($str).'';

$str = '<a href="demo.php?m=index&a=index&name=中文" rel="external nofollow" rel="external nofollow" >测试页面</a>';

echo htmlspecialchars($str).'';

总结

以上所述是小编给大家介绍的php 中htmlentities导致中文无法查询问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • php htmlentities()函数的定义和用法

    php htmlentities() 函数把字符转换为 HTML 实体,本文章向码农介绍php htmlentities() 函数基本使用方法和实例介绍,需要的码农可以参考一下. 定义和用法 htmlentities() 函数把字符转换为 HTML 实体. 提示:要把 HTML 实体转换回字符,请使用 html_entity_decode() 函数. 提示:请使用 get_html_translation_table() 函数来返回 htmlentities() 使用的翻译表. 语法 htmle

  • php htmlentities和htmlspecialchars 的区别

    The translations performed are: 复制代码 代码如下: '&' (ampersand) becomes '&' '"' (double quote) becomes '"' when ENT_NOQUOTES is not set. ''' (single quote) becomes ''' only when ENT_QUOTES is set. '<' (less than) becomes '<' '>' (gre

  • php过滤输入操作之htmlentities与htmlspecialchars用法分析

    本文实例讲述了php过滤输入操作htmlentities与htmlspecialchars用法.分享给大家供大家参考,具体如下: 过滤输入 (即来自所列数据源中的任何数据)是指,转义或删除不安全的字符.在数据到达应用的存储层之前,一定要过滤输入数据.这是第一道防线.假如网站的评论表单接收html,默认情况下访客可以毫无阻拦地在评论中加入恶意的<script>标签,如下标示: <p> 我的测试 </p> <script>alert(123)</scrip

  • php 中htmlentities导致中文无法查询问题

    在php中htmlspecialchars, 将特殊字元转成 HTML 格式,而htmlentities,将所有的字元都转成 HTML 字串 了,下面我来分别简单的介绍. htmlentities用法 $str = "John & 'Adams'"; echo htmlentities($str, ENT_COMPAT); echo " "; echo htmlentities($str, ENT_QUOTES); echo " "; e

  • idea中使用Inputstream流导致中文乱码解决方法

    1.问题描述 idea中使用Inputstream流导致中文乱码解决方法,当然也不一定就是输入流,可能输出流或者其他用到了流相关的字符的都可能出现乱码,这里有一个可能的解决办法. 2. 解决办法 ① idea中找到下面的路径 File--Settings--Editor--File Encodings ② Transparent native-to-ascii conversion把这个前面勾上,重新创建文件,执行就OK 很多朋友遇到Java FileInputStream读中文乱码问题,下面小

  • nodejs中转换URL字符串与查询字符串详解

    一个完整的URL字符串中,从"?"(不包括?)到"#"(如果存在#)或者到该URL字符串结束(如果不存在#)的这一部分称为查询字符串. 可以使用Query String模块中的parse方法将该字符串转换为一个对象,parse方法的使用方式如下所示: querystring.parse(str,[sep],[eq],[options]); str表示被转换的查询字符串, sep.字符串中的分隔符,默认是& eq.该字符串中的分配符,默认为=."=&

  • 在python image 中实现安装中文字体

    如果一些应用需要到中文字体(如果pygraphviz,不安装中文字体,中文会显示乱码),就要在image 中安装中文字体. 默认 python image 是不包含中文字体的: mac-temp:relation_graph test$ docker run --rm -it python bash root@36d738e2084c:/# fc-list /usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: DejaVu Serif:st

  • SpringBoot 配置文件中配置的中文,程序读取出来是乱码的解决

    配置文件中是正常显示的中文,但是spring读取到的确是乱码. 我总共有两种解决办法, 第一种方法: 先复制或者备份一下你的配置文件的所有字符,打开设置将transparent native-to-ascii conversion选中,然后返回将之前的配置文件重新粘贴一遍(一定要将中文重新打一遍)如图: Transparent native-to-ascii conversion的意思是:自动转换ASCII编码. 他的工作原理是:在文件中输入文字时他会自动的转换为Unicode编码,然后在ide

  • linux mint中搜狗输入法导致pycharm卡死的问题

    下载pycharm包并且解压 通过文件下bin目录中打开终端执行./pycharm.sh 命令打开 但是卡死在这个界面(之前一直是卡在开始界面,因为我之前关了搜狗输入法就可以继续),这个界面进程必须通过kill命令强制关掉 通过ps -ef|grep pych找到这个进程的pid,再强制关掉:kill 现在我去换下输入法 (将搜狗输入法下调,然后这个界面) 更换之后,便可以正常运行,根据网上的说法,应该是由于,pycharm未适配中文导致的 我们不激活搜狗输入法,就可以正常使用pycharm,自

  • 关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法

    最近项目用到了backbone 做前后端的分离方案,遇见了中文乱码问题,解决方案总结如下: 假设需要存一条课程记录到后台 model定义如下: var AddCourse= Backbone.Model.extend({ url:path+"/course/add", parse : function(response){ return response.data; } }); encodeURIComponent 函数 将中文的内容进行编码 $('#addCourseBtn' ).c

  • mysql中使用instr进行模糊查询方法介绍

    在mysql中使用内部函数instr,可代替传统的like方式查询,并且速度更快. instr 函数,第一个参数是字段,第二个参数是要查询的串,返回串的位置,第一个是1,如果没找到就是0. 例如,查询字段name中带"军"的名字,传统的方法是: select name from 用户表 where name like `%军%'; 用instr的方法: select name from 用户表 where instr('name','军'); 或: select name from 用

  • thinkphp中的多表关联查询的实例详解

    thinkphp中的多表关联查询的实例详解 在进行后端管理系统的编程的时候一般会使用框架来进行页面的快速搭建,我最近使用比较多的就是thinkphp框架,thinkphp框架的应用其实就是把前端和后端进行分割管理,前端用户登录查询系统放在thinkphp中的home文件夹中进行管理,后端管理系统放在thinkphp中的admin文件夹中进行管理.对了,在使用thinkphp框架的时候是是要用到mvc架构的,mvc架构就是model(数据模型).view(视图).controller(控制器)的结

  • 浅谈mysql中多表不关联查询的实现方法

    大家在使用MySQL查询时正常是直接一个表的查询,要不然也就是多表的关联查询,使用到了左联结(left join).右联结(right join).内联结(inner join).外联结(outer join).这种都是两个表之间有一定关联,也就是我们常常说的有一个外键对应关系,可以使用到 a.id = b.aId这种语句去写的关系了.这种是大家常常使用的,可是有时候我们会需要去同时查询两个或者是多个表的时候,这些表又是没有互相关联的,比如要查user表和user_history表中的某一些数据

随机推荐