当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-10-28 14:44:42 浏览: 评论:0 

php htmlentities用于接受一个字符串并将该字符串转换为对应的HTML实体,这篇文章主要介绍了php htmlentities导致中文无法查询问题,需要的朋友可以参考下。

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

htmlentities用法

  1. $str = "John & 'Adams'";  
  2.  echo htmlentities($str, ENT_COMPAT);  
  3.  echo "  
  4.  ";  
  5.  echo htmlentities($str, ENT_QUOTES);  
  6.  echo "  
  7.  ";  
  8.  echo htmlentities($str, ENT_NOQUOTES);  
  9.  ?>  
  10.    
  11. John & 'Adams' 
  12.  John & 'Adams' 
  13.  John & 'Adams' 

浏览器输出:

htmlspecialchars用法

  1. & (和) 转成 & 
  2.  " (双引号) 转成 " 
  3.  < (小于) 转成 < 
  4.  > (大于) 转成 > 

例:

  1. $str = "John & 'Adams'";  
  2.  echo htmlspecialchars($str, ENT_COMPAT);  
  3.  echo "  
  4.  ";  
  5.  echo htmlspecialchars($str, ENT_QUOTES);  
  6.  echo "  
  7.  ";  
  8.  echo htmlspecialchars($str, ENT_NOQUOTES);  
  9.  ?> 

他们的区别

这两个函数的功能都是转换字符为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).'';

Tags: htmlentities php中文查询

分享到: