PHP基础点总结
PHP String函数
1.echo是语句而不是函数,不需要加圆括号,可以输出多个变量值,没有返回值,注意的是echo可以在命令行使用用于覆盖文件内容或者向文件追加内容。
1 echo '123456' > 1 //用’123456‘覆盖1中的内容 2 3 echo 'aaaaaa' >> 1 //将’aaaaaa‘追加到1中
输出多个变量时echo($a, $b)会引起解析错误,应该写成echo $a, $b,不能输出复合型变量,只能输出简单类型。
2.print是语句而不是函数,不需要圆括号,只能输出一个变量,有返回值1,不能输出复合型变量,只能输出简单类型,速度比echo稍慢。
3.print_r是函数而不是语句,需要加圆括号,有返回值1,可以输出复合类型,输出数组时会用结构表示,可以用第二个参数来控制是否需要将内容输出,此时返回值是将要输出的内容。
例如print_r($a, true)表示只是返回结果而并不输出。
4.printf是函数,把内容格式化之后输出,类似于C语言,有返回值,返回值为打印出内容的长度。
5.sprintf是函数,把内容格式化之后并不输出,只是返回, 其他与printf相同. 返回格式化之后的内容。
6.var_dump,函数,输出变量的类型,长度,内容,常常用来调试,没有返回值。
7.当字符串中包含引号时,三种解决方案:单引号嵌入双引号,双引号嵌入单引号,使用‘\’转义。
<?php $str_string1 = '"test"'; $str_string2 = "'test'"; $str_string3 = '\'test\''; echo $str_string1; echo "<br />"; echo $str_string2; echo "<br />"; echo $str_string3; ?>
8.当字符串中遇到变量时,分为两种情况:1当双引号中包含变量时,变量会与双引号中的内容连在一起;2当单引号中包含变量时,变量会被当做字符串输出。
<?php $test = 1; $str_string1 = ' $test '; $str_string2 = " $test "; $str_string3 = ' "$test" '; $str_string4 = " '$test' "; echo $str_string1;//$test echo "<br />"; echo $str_string2;//1 echo "<br />"; echo $str_string3;//"$test" echo "<br />"; echo $str_string4;//'1' ?>
9.当字符串很长时,使用Heredoc结构形式的方法,首先定界符表示字符串(<<<),接着在(<<<)之后提供一个标识符(任意名称),换行后是字符串,最后以这个标识符结束字符串。注意标识符左右不要有多余的空格。
$str = <<< G 123 G; echo $str;
10.define第三个参数的使用,如果设为true则是大小写不敏感,否则大小写敏感,默认大小写敏感。
1 define('HoverTree', '何问起', true); 2 echo HoverTree; 3 echo hoverTree; 4 5 //输出 6 何问起何问起
作用域
PHP有三种不同的变量作用域:local(局部)、global(全局)、static(静态),函数之外声明的变量有global作用域,只能在函数以外进行访问;函数内部声明的变量有local作用域,只能在函数内部进行访问。
<?php $x=5; // 全局作用域 function myTest() { $y=10; // 局部作用域 echo "<p>测试函数内部的变量:</p>"; echo "变量 x 是:$x<br>"; echo "变量 y 是:$y"; } //无输出 //10 myTest(); echo "<p>测试函数之外的变量:</p>"; echo "变量 x 是:$x<br>";//5 echo "变量 y 是:$y";//无输出 ?>
global关键词,用于在函数内部访问全局变量
<?php $x=5; $y=10; function myTest() { global $x,$y; $y=$x+$y; } myTest(); echo $y; // 输出 15 ?> //等同于如下代码 <?php $x=5; $y=10; function myTest() { $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; } myTest(); echo $y; // 输出 15 ?>
static关键词
一般情况下,当函数执行完成后会删除所有的变量,但是有时候想保留某个变量的值,这时候需要在首次声明该变量时使用static关键字。每当函数被调用时,这个变量存储的信息都是该函数最后一次被调用时存储的信息,但是该变量仍然是函数的局部变量。
<?php function myTest() { static $x=0; echo $x; $x++; } myTest();//0 echo "<br>"; myTest();//1 echo "<br>"; myTest();//2 echo "<br>"; myTest();//3 echo "<br>"; myTest();//4 ?>
多线程同时读写一个文件加锁
<?php $file = fopen("test.txt","w+"); // 排它性的锁定 if (flock($file,LOCK_EX)) { fwrite($file,"Write something"); // release lock flock($file,LOCK_UN); } else { echo "Error locking file!"; } fclose($file); ?>
禁掉cookie如何使用session?如何设置session的过期时间
1.将session_id拼接在url上面传到服务器端,缺点是整个站点上不能使用静态页面,因为静态页面无法传递session_id。
2.在表单提交时,通过隐藏的文本框将session_id传过去,缺点是不能使用a标签这种直接调页面的方式。
设置session过期时间的方法。
1 第一种 setcookie() 直接用setcookie设置session id的生命周期。 2 3 $lifetime=60; //保存1分钟 4 session_start(); 5 setcookie(session_name(), session_id(), time()+$lifetime, "/");
6 第二种 session_set_cookie_params()
7 $lifetime=60;//保存1分钟 8 session_set_cookie_params($lifetime); 9 session_start(); 10 session_regenerate_id(true); 11 其中session_regenerate_id();方法用于改变当前session_id的值,并保留session中数组的值。
参数默认为 false,如果设置为true则改变session_id的值,并清空当前session数组。
php读取文件的方法
1.file_get_contents()把整个文件读入一个字符串中。
2.用fopen打开url, 以get方式获取内容(借助fgets()函数)。
3.用fsockopen函数打开url(可以以get和post的方式获取),以get方式获取完整的数据,包括header和body。
4.使用curl库获取内容,使用curl库之前,需要查看php.ini,查看是否已经打开了curl扩展。
php如何获取客户端的IP地址?
1.$_SERVER['REMOTE_ADDR'] ; 通过全局数组来获得
2.getenv('REMOTE_ADDR') ; 通过环境变量来获得
有mail.log的一个文档,内容为若干邮件地址,用’\n’分隔换行。挑选sina.com的地址(包括从文件读取、过滤到列印出来)。
cat mail.log | grep sina.com 全部打印包含sina.com的行信息
cat mail.log | grep -C 5 'sina.com' 显示file文件里匹配sina.com那行以及上下5行
cat error.log | grep -B 5 'sina.com' 显示sina.com及前5行
cat error.log | grep -A 5 'sina.com' 显示sina.com及后5行
如果使用正则表达式则速度慢,效率低。
isset() 、empty()与is_null的区别
isset():仅当null和未定义时返回false.
empty():""、0、"0"、NULL、FALSE、array(),未定义,均返回false;
is_null():只有一个变量定义了,且它的值是null,它才返回TRUE,如果未定义就报警告,但此时仍返回true。
empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!
正则表达式
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
curl
1 function httpRequest($url, $params, $postData, $get = true, $httpHeader = array()) 2 { 3 $ch = curl_init($url); 4 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 5 if ($get) { 6 curl_setopt($ch, CURLOPT_URL, $url . '?' . $params); 7 } else { 8 curl_setopt($ch, CURLOPT_URL, $url . '?' . http_build_query($params)); 9 curl_setopt($ch, CURLOPT_POST, true); 10 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData)); 11 } 12 curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeader); 13 $output = curl_exec($ch); 14 if ($output === false) { 15 $output = '{"error": "error"}'; 16 } 17 curl_close($ch); 18 19 return $output; 20 }
php获取post内容体
file_get_contents("php://input")

浙公网安备 33010602011771号