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,只转义双引号,不转义单引号,除非设置成 &(与符号)转为& "(双引号)转为" '(单引号)转为' < (小于)转为< >(大于)转为> |
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 字符串进行解码 |