我在PHP中混淆的三组函数总结(htmlentities,html_entity_decode,addslashes)

一、htmlentities() 和htmlspecialchars()

1、htmlentities()

1.1  功能:把字符转换为 HTML 实体。字符包括ASCII实体和ISO 8859-1实体(HTML实体对照表:http://www.w3school.com.cn/tags/html_ref_entities.html)

1.2  语法:htmlentities(string,quotestyle,character-set)

1.3  参数:string是必选参数,是需要转换的字符串。其余可选,quotestyle规定如何编码单引号和双引号:ENT_COMPAT – 默认。仅编码双引号;ENT_QUOTES – 编码双引号和单引号;ENT_NOQUOTES – 不编码任何引号。character-set是规定转换用的字符集,常用的有UTF-8/GB-2312/ISO-8859-1(默认)。

1.4  提示:无法被识别的字符集将被忽略,并由 ISO-8859-1 代替。

$str = "John & 'Adams'";
echo htmlentities($str);
//在浏览器中输出:John & 'Adams'
//查看源代码:John & 'Adams'

2、htmlspecialchars()

2.1   把一些预定义的字符转换为 HTML 实体。预定义字符都是ASCII 实体,即此函数不能转换ISO 8859-1实体,这是和htmlrntities()的区别

预定义的字符是:

& (和号) 成为 &
” (双引号) 成为 "
‘ (单引号) 成为 '
< (小于) 成为 &lt;
> (大于) 成为 &gt;

2.2   htmlspecialchars(string,quotestyle,character-set)

2.3   参数htmlentities()

2.4   提示:无法被识别的字符集将被忽略,并由 ISO-8859-1 代替。

$str = "John & 'Adams'";
echo htmlentities($str);
//在浏览器中输出:John & 'Adams'
//查看源代码:John &amp; 'Adams'

二、html_entity_decode()和htmlspecialchars_decode()

html_entity_decode(string,quotestyle,character-set) 函数把 HTML 实体转换为字符,是htmlentities()的反函数。

htmlspecialchars_decode(string,quotestyle)函数把预定义的 HTML 实体转换为字符,是htmlspecialchars()的反函数。

$str = "John &amp; 'Adams'";
echo html_entity_decode($str);
//浏览器输出:John & 'Adams'
//源代码:John & 'Adams'

三、addslashes()和addcslashes()

1、addslashes(string):在指定的预定义字符前添加反斜杠。string是需要检查的字符串。该函数数可用于为存储在数据库中的字符串以及数据库查询语句准备合适的字符串。

预定义字符是:单引号(’)、双引号(”)、反斜扛()和NULL

ps:默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";

输出:

Who's John Adams? This is not safe in a database query.
Who's John Adams? This is safe in a database query.

2、addcslashes(string,characters) 函数在指定的字符前添加反斜杠。stirng必须,第二个可选。规定受 addcslashes() 影响的字符或字符范围。

ps:在对 0,r,n 和 t 应用 addcslashes() 时要小心。在 PHP 中,,r,n 和 t 是预定义的转义序列。此函数可以对任何字符,包括预定义字符进行反斜扛添加,这是和addslashes的区别

//向特定字符添加反斜杠
$str = "Hello, my name is John Adams.";
echo $str;
echo addcslashes($str,'m');
echo addcslashes($str,'J');

输出:

Hello, my name is John Adams.
Hello, my name is John Adams.
Hello, my name is John Adams.

//向字符串中的一个范围内的字符添加反斜杠
$str = "Hello, my name is John Adams.";
echo $str;
echo addslashes($str);   //使用addslashes
echo addcslashes($str,'A..Z');
echo addcslashes($str,'a..z');
echo addcslashes($str,'a..h');

输出:

Hello, my name is John Adams.

Hello, my name is John Adams.

Hello, my name is John Adams.

Hello, my name is John Adams.

Hello, my name is John Adams.

时间: 2024-09-17 04:29:18

我在PHP中混淆的三组函数总结(htmlentities,html_entity_decode,addslashes)的相关文章

Word 2007中段落间距三种设置技巧

  一篇文档编辑完后,对文字.段落设置好后,还要对文档的间距进行调整,如果一篇文档太长又太密,容易是阅读者产生视觉疲劳,所以对文本段落间距的设置是非常有必要的.下面我们就一起来看看吧. 方法一. 先将鼠标移动到需要调整的段落下,然后在"开始"选项卡中的"段落"选项组中点击"行距"按钮,在弹出的下拉选项列表中可设置增加段前间距.增加段后间距,还有常用的一些单位如:1.0.1.15.1.5.2.0.2.5.3.0.(如下图) 段前间距 方法二. ①同

数据帧-c#串口通信中上位机测试数据组帧

问题描述 c#串口通信中上位机测试数据组帧 测试 发送数据的参数,设置温度频率时延输出功率,,这些数据组成一帧并且发送,然后接收,,, 解决方案 参考:http://www.360doc.com/content/13/0829/09/7531335_310657574.shtml 解决方案二: 可以在串口使用modbus协议通讯. 或者根据modbus的思想自己弄一套协议. modbus有应答和校验机制,能够保证串口通讯的可靠性. 解决方案三: 上位机-串口通信-C#

c语言,对结构体中的整型数组进行赋值.....

问题描述 c语言,对结构体中的整型数组进行赋值..... c语言中,在结构体里声明整型数组,想对整型数组赋值,只能用循环吗?如果我想这样呢..... typedef struct Data { int arr[10]; }Data; int main() { Data data; data = (Data)malloc(sizeof(Data)); data->arr[10]={1,3,2,4,5,6,7,8,9,0}; . ... ... ... } 这样可以吗? 解决方案 绝对不可以.数组作

job_group:集群中job的所属组的名字,该名字用户自己随意定制,无强行要求

问题描述 job_group:集群中job的所属组的名字,该名字用户自己随意定制,无强行要求定时任务采用Quzrtz+spring配置文件实例化进数据库但是job_group默认为DEFAULT如何配置job_group?速求 解决方案 解决方案二:版主在否解决方案三: 解决方案四:mapreduce.job.queuename

第三组:基于云计算的大规模负载测试平台Bench4Q

第三组:各位同学,各位尊敬的嘉宾,大家好,今天我带来一个题目是:基于云计算的大规模负载测试平台,我是陈铁男.不同于刚才两位同学,我们是为服务提供服务的.基于互联网开放的情况下,在用户不可预计的情况下,能否依然为用户提供良好的服务.下面是我们这个项目基本情况的介绍.Bench4Q是基于云计算的大规模负载测试平台.我们拿出的产品是相对学院派的风格,不同于其他,他们是市场化.商业化的情况. 什么是负载测试?通过自动化的测试工具,模拟多种正常的.峰值的.异常的测试条件.它的测试目的很清晰,就是在这种测试

JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解_基础知识

首先还是看看JavaScript: The Definitive Guide, 4th Edition中对三个函数的定义. Math.ceil(): round a number up Arguments: Any numeric value or expression Returns: The closest integer greater than or equal to x. ---------------------------------------------------------

较长数据无法在Asp页面中取出的三种解决方法

较长text型数据无法在Asp页面中取出的解决办法 在Asp页面中向记录集取长text型数据时,出现如下错误现象时: Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21' Errors occurred 可有以下三种解决办法: (一)使用rs.open sql,conn,1,3方式打开记录集 (二)将该列放在第一列取出,比如comment里存放有较长的text内容,取记录集内容的时候,先来个comment=rs("comment&quo

ASP技术在论坛中的运用(三)

先要给出一个表单,能够让网友输入注册信息,这些是HTML的内容,且放在一边,我们来仔细看看具体实现注册的ASP脚本. ' 将数据中的单引号改成两个单引号,并且在前后加上单引号 Function SqlStr( data ) SqlStr = "'" & Replace( data, "'", "''" ) & "'" End Function 这是一个自定义的函数,用来把用户输入中的单引号(')转换成两个单引号

Excel表格中常用的三种数据转置的方法

  Excel表格中常用的三种数据转置的方法          如下图所示,需要将A2:B9的内容,转变为D列的样子. 思考一下,有几种方法能实现呢? 这个题目乍一看是有点难度的高大上,是不是啊? 1.VBA代码法 按Ctrl+F11,打开VBE编辑器,在代码窗口中写上以下代码: Sub run() For i = 1 To 8 Cells(2 + (i - 1) * 2, 4) = Cells(i + 1, 1) Cells(3 + (i - 1) * 2, 4) = Cells(i + 1,