php三种方法解决抓取页面内容乱码问题

<?php
function gzdecode2($data) {
$len = strlen($data);
if ($len < 18 || strcmp(substr($data,0,2),”\x1f\x8b”)) {
return null; // Not GZIP format (See RFC 1952)
}
$method = ord(substr($data,2,1)); // Compression method
$flags = ord(substr($data,3,1)); // Flags
if ($flags & 31 != $flags) {
// Reserved bits are set — NOT ALLOWED by RFC 1952
return null;
}
// NOTE: $mtime may be negative (PHP integer limitations)
$mtime = unpack(“V”, substr($data,4,4));
$mtime = $mtime[1];
$xfl = substr($data,8,1);
$os = substr($data,8,1);
$headerlen = 10;
$extralen = 0;
$extra = “”;
if ($flags & 4) {
// 2-byte length prefixed EXTRA data in header
if ($len – $headerlen – 2 < 8) {
return false; // Invalid format
}
$extralen = unpack(“v”,substr($data,8,2));
$extralen = $extralen[1];
if ($len – $headerlen – 2 – $extralen < 8) {
return false; // Invalid format
}
$extra = substr($data,10,$extralen);
$headerlen += 2 + $extralen;
}

$filenamelen = 0;
$filename = “”;
if ($flags & 8) {
// C-style string file NAME data in header
if ($len – $headerlen – 1 < 8) {
return false; // Invalid format
}
$filenamelen = strpos(substr($data,8+$extralen),chr(0));
if ($filenamelen === false || $len – $headerlen – $filenamelen – 1 < 8) {
return false; // Invalid format
}
$filename = substr($data,$headerlen,$filenamelen);
$headerlen += $filenamelen + 1;
}

$commentlen = 0;
$comment = “”;
if ($flags & 16) {
// C-style string COMMENT data in header
if ($len – $headerlen – 1 < 8) {
return false; // Invalid format
}
$commentlen = strpos(substr($data,8+$extralen+$filenamelen),chr(0));
if ($commentlen === false || $len – $headerlen – $commentlen – 1 < 8) {
return false; // Invalid header format
}
$comment = substr($data,$headerlen,$commentlen);
$headerlen += $commentlen + 1;
}

$headercrc = “”;
if ($flags & 1) {
// 2-bytes (lowest order) of CRC32 on header present
if ($len – $headerlen – 2 < 8) {
return false; // Invalid format
}
$calccrc = crc32(substr($data,0,$headerlen)) & 0xffff;
$headercrc = unpack(“v”, substr($data,$headerlen,2));
$headercrc = $headercrc[1];
if ($headercrc != $calccrc) {
return false; // Bad header CRC
}
$headerlen += 2;
}

// GZIP FOOTER – These be negative due to PHP’s limitations
$datacrc = unpack(“V”,substr($data,-8,4));
$datacrc = $datacrc[1];
$isize = unpack(“V”,substr($data,-4));
$isize = $isize[1];

// Perform the decompression:
$bodylen = $len-$headerlen-8;
if ($bodylen < 1) {
// This should never happen – IMPLEMENTATION BUG!
return null;
}
$body = substr($data,$headerlen,$bodylen);
$data = “”;
if ($bodylen > 0) {
switch ($method) {
case 8:
// Currently the only supported compression method:
$data = gzinflate($body);
break;
default:
// Unknown compression method
return false;
}
} else {
// I’m not sure if zero-byte body content is allowed.
// Allow it for now… Do nothing…
}

// Verifiy decompressed size and CRC32:
// NOTE: This may fail with large data sizes depending on how
// PHP’s integer limitations affect strlen() since $isize
// may be negative for large sizes.
if ($isize != strlen($data) || crc32($data) != $datacrc) {
// Bad format! Length or CRC doesn’t match!
return false;
}
return $data;
}

$url=”http://www.x23us.com/html/8/8998/2527190.html”;

/*方法三*/
/*
$str=file_get_contents($url);
$str=gzdecode2($str);
echo $str;
*/

/*方法二*/
/*
$str = file_get_contents(“compress.zlib://”.$url);
echo $str;
*/

/*方法一*/

function curl_get($url, $gzip=false){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
if($gzip) curl_setopt($curl, CURLOPT_ENCODING, “gzip”); // 关键在这里
$content = curl_exec($curl);
curl_close($curl);
return $content;
}

echo curl_get($url,true);

?>

原文:http://www.jb51.net/article/43095.htm


关注公众号,了解更多it技术(it问答网

PHP 全局变量 – 超全局变量

PHP 全局变量 – 超全局变量
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的
全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可
以访问它们。

这些超全局变量是:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION


关注公众号,了解更多it技术(it问答网

redis是一个key-value存储系统。和Memcached类似

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。[1]
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地)
目前,Vmware在资助着redis项目的开发和维护。
百科:https://baike.baidu.com/item/Redis/6549233?fr=aladdin

 


关注公众号,了解更多it技术(it问答网

phpstorm介绍

官方网址:https://www.jetbrains.com/

中文网址:https://www.jetbrains.com/zh/phpstorm/specials/phpstorm/phpstorm.html?utm_source=baidu&utm_medium=cpc&utm_campaign=cn-bai-br-phpstorm-ex-pc&utm_content=phpstorm-prue&utm_term=phpstorm

PhpStorm (强大的PHP开发环境)2017.2.4 附注册方法

http://www.oyksoft.com/soft/40722.html?pc=1

 

 

 


关注公众号,了解更多it技术(it问答网

表达式全集

表达式全集

字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行“\\”匹配“\”而“\(”则匹配“(”。
^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
{n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。
. 匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“(.|\n)”的模式。
(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
(?<=pattern) 反向肯定预查,与正向肯定预查类拟,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
(?<!pattern) 反向否定预查,与正向否定预查类拟,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。
x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。
[xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
\B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d 匹配一个数字字符。等价于[0-9]。
\D 匹配一个非数字字符。等价于[^0-9]。
\f 匹配一个换页符。等价于\x0c和\cL。
\n 匹配一个换行符。等价于\x0a和\cJ。
\r 匹配一个回车符。等价于\x0d和\cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于[^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于\x09和\cI。
\v 匹配一个垂直制表符。等价于\x0b和\cK。
\w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
\xn 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。.
\num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。
\nml 如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
\un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。

 

常用正则表达式

用户名 /^[a-z0-9_-]{3,16}$/
密码 /^[a-z0-9_-]{6,18}$/
十六进制值 /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
电子邮箱 /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
IP 地址 /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
HTML 标签 /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
删除代码\\注释 (?<!http:|\S)//.*$
Unicode编码中的汉字范围  /^[^u4E00-u9FA5]+$/

关注公众号,了解更多it技术(it问答网

字符截取+删除html

function cutdot($Str, $Length, $dot) {//$Str为截取字符串,$Length为需要截取的长度
global $s;
$i = 0;
$l = 0;
$ll = strlen($Str);
$s = $Str;
$f = true;

while ($i <= $ll) {
if (ord($Str{$i}) < 0x80) {
$l++; $i++;
} else if (ord($Str{$i}) < 0xe0) {
$l++; $i += 2;
} else if (ord($Str{$i}) < 0xf0) {
$l += 2; $i += 3;
} else if (ord($Str{$i}) < 0xf8) {
$l += 1; $i += 4;
} else if (ord($Str{$i}) < 0xfc) {
$l += 1; $i += 5;
} else if (ord($Str{$i}) < 0xfe) {
$l += 1; $i += 6;
}

if (($l >= $Length) && $f) {
$s = substr($Str, 0, $i);
$f = false;
}

if (($l > $Length) && ($i < $ll)) {
$s = $s;
return $s.$dot; //如果当前串长度小与指定长度,则退出。
}
}
return $s;
}

//删除html样式,得到纯文本
function deleteHtmlTags($string, $br = false,$Length=””,$dot=””)
{
while(strstr($string, ‘>’))
{
$currentBeg = strpos($string, ‘<‘);
$currentEnd = strpos($string, ‘>’);
$tmpStringBeg = @substr($string, 0, $currentBeg);
$tmpStringEnd = @substr($string, $currentEnd + 1, strlen($string));
$string = $tmpStringBeg.$tmpStringEnd;
}

if(!empty($Length)){
return cutdot($string, $Length, $dot);
}else{
return $string;
}
}


关注公众号,了解更多it技术(it问答网

如何删除数据库里最后一条数据和如何删除数据库里第一条数据

学员问题:

徐多蔚老师给出的解决方案格式:

delete a from infos a,(select max(id) id from infos) b where a.id = b.id;   max最后一个id
delete a from infos a,(select min(id) id from infos) b where a.id = b.id; min获得第一个id


关注公众号,了解更多it技术(it问答网

GIT (分布式版本控制系统)

来源:https://baike.baidu.com/item/GIT/12647237?fr=aladdin

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。[1]  Git的读音为/gɪt/。
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。[2]  Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。

特点

编辑

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
下图是经典的git开发过程。
Git的功能特性:
从一般开发者的角度来看,git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
1、查看邮件或者通过其它方式查看一般开发者的提交状态。
2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
3、向公共服务器提交结果,然后通知所有开发人员。
优点:
适合分布式开发,强调个体。
公共服务器压力和数据量都不会太大。
速度快、灵活。
任意两个开发者之间可以很容易的解决冲突。
离线工作。
缺点:
资料少(起码中文资料很少)。
学习周期相对而言比较长。
不符合常规思维。
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

关注公众号,了解更多it技术(it问答网

kohana框架介绍

Kohana 是一款纯 PHP5 的框架,基于 MVC 模式开发, 它的特点就是高安全性,轻量级代码,容易使用。 2009年9月发布了3.0版本,支持HMVC模式。

 

简介编辑
kohana是一个基于MVC模型构建的PHP5框架,它的目标旨在安全,重量轻,且易于使用。

特点编辑
1。严谨的PHP5面向对象编程。优势:可见性保护,自动加载,重载,接口,抽象类,单一模式等。
2。社区,没有公司。Kohana是由社区构想,讨论,及编码。Kohana的开发者们来自世界各地,有着各自的天赋。这使得开发速度得以提高,并在短时间内提供bug修复以及反馈用户提出的建议。
3。GET,POST,COOKIE,SESSION数组都能按照预期的工作。Kohana不限制你访问全局数据,但是提供了XSS过滤和检查所有的全局变量。
4。级联式资源,模块和继承。可以从你的系统,程序或者模块路径的任何地方加载控制器,模型,类库,助手和视图。配置参数可以继承或动态声明覆盖。
5。没有名字空间冲突。类前缀和后缀用来保护名字空间冲突。
6。类的自动加载。Kohana里的所有类都能自动被框架加载,不需要手动引用。
7。API一致性。类能使用驱动不同的访问不同的协议来保持API的一致性,即使底层发生变化。
8。强大的事件处理机制。Kohana的事件可被动态的添加、替换或删除。

目标编辑
更安全在任何时候,对安全的最佳做法:
*kohana内置XSS保护,也可以使用HTMLPurfier作为的XSS过滤器。
*所有数据插入到数据库是避免使用数据库特定方法,如mysql_real_escape_string,以防止SQL注入攻击。Kohana里的magicquotes是被关闭的。
*所有POST,GET,和COOKIE数据都经过处理,以防止恶意行为。
更轻量级以最有效的方式提供最大的灵活性:
*Kohana尽可能的使用公约配置(conventionoverconfiguration)。
*合理的配置和高度优化的环境检测例程允许kohana运行在几乎任何php5环境。
*松耦合(Loosecoupling)是用来总是载入的最少数量的文件,减少资源的使用。
*一个清洁的API和使用本土职能,尽可能使kohana成为最快的php5框架之一。

http://kohanaframework.org/


关注公众号,了解更多it技术(it问答网

php大小写敏感问题的总结(实用型)

我们知道,PHP语言对大小写敏感问题的处理有点乱,在编程时需要多加注意,特别是在linux平台中更要注意。本文对这一问题做个总结,供大家学习参考。

说明:
不鼓励用这些规则,仅作为学习研究之用。
在编程中,应当坚持“大小写敏感”,遵循统一的代码规范。

一、大小写敏感
1. 变量名区分大小写
所有变量均区分大小写,包括普通变量以及$_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION,$GLOBALS,$_SERVER,$_FILES,$_ENV 等;
例子:

<?php
$abc = ‘abcd’;
echo $abc; //输出 ‘abcd’
echo $aBc; //无输出
echo $ABC; //无输出
?>

 

2. 常量名默认区分大小写,通常都写为大写

<?php
define(“ABC”,”Hello World”);
echo ABC; //输出 Hello World
echo abc; //输出 abc
?>

3. php.ini配置项指令区分大小写
如 file_uploads = 1 不能写成 File_uploads = 1

 

二、大小写不敏感
1. 函数名、方法名、类名 不区分大小写,但推荐使用与定义时相同的名字
例子:

<?php
function show(){
echo “Hello World”;
}
show(); //输出 Hello World 推荐写法
SHOW(); //输出 Hello World
?>

<?php
class cls{
static function func(){
echo “hello world”;
}
}

Cls::FunC(); //输出hello world
?>

2. 魔术常量不区分大小写,推荐大写
包括:__LINE__、__FILE__、__DIR__、__FUNCTION__、__CLASS__、__METHOD__、 __NAMESPACE__。
例子:

<?php
echo __line__; //输出 2
echo __LINE__; //输出 3
?>

3. NULL、TRUE、FALSE不区分大小写
例子:

<?php
$a = null;
$b = NULL;
$c = true;
$d = TRUE;
$e = false;
$f = FALSE;
var_dump($a == $b); //输出 boolean true
var_dump($c == $d); //输出 boolean true
var_dump($e == $f); //输出 boolean true
?>

4.类型强制转换,不区分大小写

包括

(int),(integer) – 转换成整型
(bool),(boolean) – 转换成布尔型
(float),(double),(real) – 转换成浮点型
(string) – 转换成字符串
(array) – 转换成数组
(object) – 转换成对象
<?php
$a=1;
var_dump($a); //输出 int 1
$b=(STRING)$a;
var_dump($b); //输出string ‘1’ (length=1)
$c=(string)$a;
var_dump($c); //输出string ‘1’ (length=1)
?>

 


关注公众号,了解更多it技术(it问答网