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 'sina.com' 显示file文件里匹配sina.com那行以及上下5行

cat error.log | grep -B 'sina.com' 显示sina.com及前5行

cat error.log | grep -A '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")

 

posted @ 2015-10-20 15:42  沉默的天蝎  阅读(108)  评论(0)    收藏  举报