PHP一不小心就入坑的注意项

本文深入解析PHP中的关键函数,如empty(), isset(), http_build_query()等的使用场景及注意事项,涵盖变量判断、字符串处理、正则表达式及常用转义函数的详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、empty()用于判断变量是否为空、0或false,变量的值如果是字符串'0'时也返回true;

2、isset()用于判断变量是否被设置,即:非数组的变量是否被赋值,数组中指定的key是否定义且对应的value不为null;

3、任意值和布尔值比较时,非empty()的任意值都会被当成true处理,否则为false;

4、任意非布尔值和数值比较时,任意非布尔值都会先转成数字,如果是字母等无法转的字符串,都被当成0处理;

5、echo打印false时什么也不会输出,echo打印true时则会输出1,同理boolean类型的值与字符串连接时,false不会输出,true输出1;

6、http_build_query()会将数组中的false转为0,true转为1;

7、is_int()要求类型必须是整型的数字(包括0x开头的十六进制),is_numeric()不仅可以是数值(包括0x开头的十六进制),也可以是字符串类型的数字,但不能是0x开头的十六进制字符串;

8、ltrim()和rtrim()都会循环去除字节串,也就是说经过第1次去除后剩余的字符串会继续调同样的方法去除,直到不能去除为止,所以汉字经过处理可能出现乱码。另外如果指定的去除多个字符中有包含关系,那么优先去除范围更大的那个字符;

8、中文的正则是:

"/[\x{4e00}-\x{9fa5}]/u"

9、URL中path的正则是:

"/^\/[,;:!=@&#~'()[$?+*\\w\-\.\/\]]+$/"

10、常用的转义函数:

函数说明
htmlspecialchars

将HTML中以下特殊字符转成转义字符,第二个参数默认是ENT_COMPAT,只转义双引号,不转义单引号,除非设置成ENT_QUOTES。

&(与符号)转为&

"(双引号)转为"

'(单引号)转为'

< (小于)转为&lt;

>(大于)转为&gt;

htmlentities将所有具有HTML实体的字符进行转义,不止htmlspecialchars转义的5个字符

addslashes

addslashes可以在'(单引号)、"(双引号)、\(反斜线)与 \0(空字符)前增加\(反斜线)

 

stripslashes去掉\(反斜线)
quotemeta将. \ + * ? [ ^ ] ( $ ) 前增加\(反斜线)
nl2br将换行符转成<br/>
strip_tags去除HTML标签和PHP标记,第二个参数可以指定不去除的标签。如果第一个参数中包含多余的'<'而没有相应的'>'配对,那么该函数会将'<'之后的内容全部去除。

mysql_escape_string

mysql_real_escape_string

将\x00 \n \r \ ' " 和 \x1a前增加\(反斜线),mysql_real_escape_string会受当前连接的字符集的影响,mysql_escape_string则不受当前连接的字符集的影响
base64_encode使用 MIME base64 对数据进行编码
base64_decode使用 MIME base64 对编码的数据进行解码
rawurlencode将字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,即RFC 3986编码。在 PHP 5.3.0 之前,rawurlencode 根据RFC 1738对~(波浪线)进行编码
rawurldecode对已进行rawurlencode编码的 URL 字符串进行解码
urlencode将字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,即RFC 3986编码,但是由于历史原因,会将空格编码为+(加号),与rawurlencode对空格的编码处理不同
urldecode对已进行urlencode编码的 URL 字符串进行解码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值