1.POST GET区别php
POST 和GET是什么?HTTP协议中的两种发送请求的方法 HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通讯的协议。正则表达式
HTTP的底层是TCP/IP。因此GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP连接数组
GET - 从指定的资源请求数据。 ---查询字符串(名称/值对)是在 GET 请求的 URL 中发送的浏览器
POST - 向指定的资源提交要被处理的数据 ---查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的缓存
长的说:安全
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);服务器
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。网络
也就是说,GET只须要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,大家打开门迎接我”,而后再回头把货送过去。并发
由于POST须要两步,时间上消耗的要多一点,看起来GET比POST更有效。所以Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为何?函数
1. GET与POST都有本身的语义,不能随便混用。
2. 据研究,在网络环境好的状况下,发一次包的时间和发两次包的时间差异基本能够无视。而在网络环境差的状况下,两次包的TCP在验证数据包完整性上,有很是大的优势。
3. 并非全部浏览器都会在POST中发送两次包,Firefox就只发送一次。
https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3833d9ca20b9f7dcd9d33e4#rd
GET的语义是请求获取指定的资源。GET方法是安全、幂等、可缓存的(除非有 Cache-Control
Header的约束),GET方法的报文主体没有任何语义。
POST的语义是根据请求负荷(报文主体)对指定的资源作出处理,具体的处理方式视资源类型而不一样。POST不安全,不幂等,(大部分实现)不可缓存。
2。HTML BASE含义
<base> 标签为页面上的全部连接规定默认地址或默认目标。base其实就是定义一个默认的地址和默认目标。在其后的连接元素都将起做用。
3.魔术方法
__construct() 类的构造函数
__desctruct() 类的析构函数
__get() 得到一个类的成员变量时调用
__set() 设置一个类的成员变量时调用
__isset() 当对不可访问属性调用isset()或empty()时调用
__unset() 当对不可访问属性调用unset()时被调用。
__toString() 类被当成字符串时的回应方法
__clone() 当对象复制完成时调用
__sleep() 执行serialize()时,先会调用这个函数
__call() 在对象中调用一个不可访问方法时调用
__invoke() 调用函数的方式调用一个对象时的回应方法
__autoload() 尝试加载未定义的类
4。PHP正则表达式 验证电子邮件地址
$email_address = $_POST["email_address"];
$pattern = "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i";
if ( preg_match( $pattern, $email_address ) )
解释:
1.这头尾两个斜杠/是正则表达式的限定符,这是Perl正则的标准,而php支持的正则表达式就是Perl正则的规范。表示两个斜杠之间就是正则内容,在结尾斜杠后面能够开启匹配的模式
2.后面的 i 就是忽略大小写匹配
3.^表示行开始 $表示行结尾
5.strrev — 反转字符串
函数实现 function getRev($str,$encoding='utf-8'){ $result = ''; $len = mb_strlen($str); for($i=$len-1; $i>=0; $i--){ $result .= mb_substr($str,$i,1,$encoding); } return $result; } $string = 'OK你是正确的Ole'; echo getRev($string);
6。
$path_parts
=
pathinfo
(
$path
);
//pathinfo — 返回文件路径的信息
echo
'分割出来的扩展名:'
.
$path_parts
[
'extension'
].
'<br><br>'
;
$file = ‘须要进行获取扩展名的文件.php’;
//第一种,根据.拆分,获取最后一个元素的值
function getExt1{
return end(explode(".",$file);)
}
//第二种,获取最后一个点的位置,截取
function getExt2{
return substr($file,strrpos($file,'.')+1);
}
//第三种,根据.拆分,获取最后一个元素的值
function getExt3($file) {
return array_pop(explode(‘.’,$file));
}
//第四种,pathinfo
function getExt5($file) {
$arr = pathinfo($file);
return $arr['extension'];
//或者这样return pathinfo($file,PATHINFO_EXTENSION);
}
//第五种,正则,子模式
function getExt6$file){
preg_match("/(gif | jpg | png)$/",$file,$match);
$match=$match[0];
}
//第六种,正则反向引用
function getExt7($file){
$match=preg_replace("/.*\.(\w+)/" , "\\1" ,$file );
echo $match;
}
echo print print_r 区别
共同点:首先echo 和 print 都不是严格意义上的函数,他们都是 语言结构;他们都只能输出 字符串,整型跟int型浮点型数据。不能打印复合型和资源型数据;
而区别是:echo 能够连续输出多个变量,而print只能一次输出一个变量。print打印的值能直接复制给一个变量,如 $a = print “123”;
而echo 不能够,它没有像函数的行为,因此不能用于函数的上下文。在使用时,echo() 函数比 print()速度稍快。
print_r() 只能打印一些易于理解的信息,且print_r()在打印数组时,会将把数组的指针移到最后边,使用 reset() 可以让指针回到开始处。