PHP 基础复习
来源:互联网 发布:vb.net 字符串包含 编辑:程序博客网 时间:2024/06/05 08:54
目录:
——数组
——函数
——字符串操作
——面向对象特征
——正则表达式
——cookies
一.数组
PHP 中的数组分为索引数组和关联数组
索引数组初始化和输出
$a=array("abc","def","ghi");print_r($a);赋值方式:$a=array("a","b","c");$a[0]=a;$a=array('0'=>'a','1'=>'b','2'=>'c');取值方式:$a0=$a['0'];for循环取值:for($i=0;$i<3;$i++){ echo 'a'.$i.'='.$a[$i];}foreach循环取值:foreach($a as $k=>$v){ each 'a'.$key.'='.$v;}关联数组的初始化和输出
<?PHP$fruit=array('apple'=>"APPLE",'banana'=>"BANANA",'pineapple'=>"APINEAPPLE");print_r($fruit);输出结果:Array ( [apple] => APPLE [banana] => BANANA [pineapple] => APINEAPPLE )赋值方式:$furit=array('apple'=>'APPLE');$furit['apple']='APPLE';取值方式:$furit0=$furit['apple']foreach循环访问关联数组:foreach($furit as $k=>$v){ echo 'key['.$key.']='.$v;}
二.函数
自定义函数<?phpfunction say(){ echo 'hello world';}有返回值的函数function add($a) { return $a+1;}返回多值的函数:function numbers() { return array(1, 2, 3);}list ($one, $two, $three) = numbers();调用可变函数,规则:变量名+();<?phpfunction func() { echo 'my function called.';}$name = 'func';$name();//调用可变函数class book { function getName() { return 'bookname'; }}$func = 'getName';$book = new book();$book->$func();字符串替换函数str_replace<?php$str = 'I am jobs';$str=str_replace('jobs','steven jobs',$str);echo $str;判断函数是否存在:<?phpfunction func() { echo 'exists';}$name = 'func';if (function_exists('func')) { //判断函数是否存在 $name();}判断类是否存在:class MyClass{}// 使用前检查类是否存在if (class_exists('MyClass')) { $myclass = new MyClass();}判断文件是否存在:$filename = 'test.txt';if (!file_exists($filename)) { echo $filename . ' not exists.';}
三.字符串操作
<?php//使用双/单引号/定义一个字符串$hello="hello world1";$hello='hello world2';//heredoc语法结构$hello=<<<TAGhello world3TAG;echo $hello;单/双引号的区别:双引号允许包含 字符串变量<?php$str='hello';echo "str is $str"; //运行结果: str is helloecho 'str is $str'; //运行结果: str is $str字符串链接:用“.”链接字符串$hello='hello';$world=' world';$hi = $hello.$world;除去首位空格:trim去除一个字符串两端空格。rtrim是去除一个字符串右部空格,其中的r是right的缩写。ltrim是去除一个字符串左部空格,其中的l是left的缩写。echo trim(" 空格 ")."<br>";echo rtrim(" 空格 ")."<br>";echo ltrim(" 空格 ")."<br>";字符串长度:$str = 'hello';$len = strlen($str);echo $len;//输出结果是5中文字符串长度:$str = "我爱你";echo mb_strlen($str,"UTF8");//结果:3字符串截取:函数说明:substr(字符串变量,开始截取的位置,截取个数)$str='i love you';//截取love这几个字母echo substr($str, 2, 4);中文字符串截取:$str='我爱你,中国';//截取中国两个字echo mb_substr($str, 4, 2, 'utf8');字符串查找:函数说明:strpos(要处理的字符串, 要定位的字符串, 定位的起始位置[可选])$str = 'I want to study at imooc';$pos = strpos($str, 'imooc');echo $pos;//结果显示19,表示从位置0开始,imooc在第19个位置开始出现字符串替换:函数说明:str_replace(要查找的字符串, 要替换的字符串, 被搜索的字符串, 替换进行计数[可选])$str = 'I want to learn js';$replace = str_replace('js', 'php', $str);echo $replace;//结果显示I want to learn php格式化字符串:函数说明:sprintf(格式, 要转化的字符串)$str = '99.9';$result = sprintf('%01.2f', $str);echo $result;//结果显示99.90说明:1、这个 % 符号是开始的意思,写在最前面表示指定格式开始了。 也就是 "起始字符", 直到出现 "转换字符" 为止,就算格式终止。2、跟在 % 符号后面的是 0, 是 "填空字元" ,表示如果位置空着就用0来填满。3、在 0 后面的是1,这个 1 是规定整个所有的字符串占位要有1位以上(小数点也算一个占位)。 如果把 1 改成 6,则 $result的值将为 099.90 因为,在小数点后面必须是两位,99.90一共5个占位,现在需要6个占位,所以用0来填满。4、在 %01 后面的 .2 (点2) 就很好理解了,它的意思是,小数点后的数字必须占2位。 如果这时候,$str 的值为9.234,则 $result的值将为9.23. 为什么4 不见了呢? 因为在小数点后面,按照上面的规定,必须且仅能占2位。 可是 $str 的值中,小数点后面占了3位,所以,尾数4被去掉了,只剩下 23。5、最后,以 f "转换字符" 结尾。字符串合并和分割:合并函数说明:implode(分隔符[可选], 数组)$arr = array('Hello', 'World!');$result = implode('', $arr);print_r($result);//结果显示Hello World!分割函数说明:explode(分隔符[可选], 字符串)$str = 'apple,banana';$result = explode(',', $str);print_r($result);//结果显示array('apple','banana')字符串转义:函数说明:用于对特殊字符加上转义字符,返回一个字符串$str = "what's your name?";echo addslashes($str);//输出:what\'s your name?
类、类属性、类方法class Car { public $name='Car01'; public function getName() { return '汽车'; } public static function getType(){ return 'Car'; }}$car = new Car();echo $car->getName();echo Car::getType();说明:使用关键字static修饰的,称之为静态方法,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::。构造器的使用:class Car{ public $name='Car01'; public $color='Red'; private $price='12800';//构造方法function __construct(){ echo 'new Car';} public function getName(){ return $this->name; }public static function getTypeName(){ return 'Car';}}$car=new Car();$car01=$car->getName();$carType=Car::getTypeName();echo $car01,$carType;打印结果:new CarCar01Car可以给构造方法添加参数:function __construct($name,$color){ echo 'new Car';}调用:$car=new Car('Car02','Black');析构函数:释放不用的对象function __destruct(){ echo 'destory object';}$car=NULL;时自动调用。php单例模式:class Car { private function __construct() { echo 'object create'; } private static $_object = null; public static function getInstance() { if (empty(self::$_object)) { self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象 } return self::$_object; }}//$car = new Car(); //这里不允许直接实例化对象$car = Car::getInstance(); //通过静态方法来获得一个实例static 关键字:class Car { private static $speed = 10; public static function getSpeed() { return self::$speed; }}echo Car::getSpeed(); //调用静态方法$func = 'getSpeed';$className = 'Car';echo $className::$func(); //动态调用静态方法class BigCar extends Car { public static function start() { parent::speedUp();//调用父类的方法 }}BigCar::start();echo BigCar::getSpeed();继承:class Car { public $speed = 0; //汽车的起始速度是0 function __construct(){ echo 'parent_construct'; } public function speedUp() { $this->speed += 10; return $this->speed; }}//定义继承于Car的Truck类class Truck extends Car{ public function speedUp(){ $this->speed = parent::speedUp() + 50; } function __construct(){ parent::__construct();//调用父类的构造器 echo 'child_construct____'; }}$car = new Truck();$car->speedUp();echo $car->speed;重载:class Car { private $ary = array(); public function __set($key, $val) { $this->ary[$key] = $val; } public function __get($key) { if (isset($this->ary[$key])) { return $this->ary[$key]; } return null; } public function __isset($key) { if (isset($this->ary[$key])) { return true; } return false; } public function __unset($key) { unset($this->ary[$key]); }}$car = new Car();$car->name = '汽车'; //name属性动态创建并赋值echo $car->name;__call();调用不存在的方法时调用__callStatic();调用不存在的静态方法时调用class Car { public $speed = 0; public function __call($name, $args) { if ($name == 'speedUp') { $this->speed += 10; } }}$car = new Car();$car->speedUp(); //调用不存在的方法会使用重载echo $car->speed;高级特性:class Car {}$a = new Car();$b = new Car();if ($a == $b) echo '=='; //true 两个实例是否完全相同if ($a === $b) echo '==='; //false 两个变量是否来自同一个引用class Car { public $name = 'car'; public function __clone() { $obj = new Car(); $obj->name = $this->name; }}$a = new Car();$a->name = 'new car';$b = clone $a;//复制一个对象var_dump($b);序列化和反序列化:class Car { public $name = 'car';}$a = new Car();$str = serialize($a); //对象序列化成字符串echo $str.'<br>';$b = unserialize($str); //反序列化为对象var_dump($b);
五.正则表达式
$p='/苹果/';//PCRE库函数preg_match用于执行一个正则匹配$str = "我喜欢吃苹果";if (preg_match($p, $str)) { echo '匹配成功';}PCRE库函数中,正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~):转义:/http:\/\//函数批量转义:$p = 'http://';$p = '/'.preg_quote($p, '/').'/';echo $p;/http\:\/\//元字符:正则表达式中具有特殊含义的字符称之为元字符,常用的元字符有:\ 一般用于转义字符^ 断言目标的开始位置(或在多行模式下是行首)$ 断言目标的结束位置(或在多行模式下是行尾). 匹配除换行符外的任何字符(默认)[ 开始字符类定义] 结束字符类定义| 开始一个可选分支( 子组的开始标记) 子组的结束标记? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)* 量词,0 次或多次匹配+ 量词,1 次或多次匹配{ 自定义量词开始标记} 自定义量词结束标记例1:匹配邮箱//下面的\w匹配字母或数字或下划线。$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/';$str = "我的邮箱是Spark.eric@imooc.com";preg_match($p, $str, $match);echo $match[0];例2:匹配电话$p = '/\w+\-\d+/'; // \d匹配数字$str = "我的电话是010-12345678哈哈11-22";preg_match($p, $str, $match);echo $match[0];贪婪模式(匹配字符+):在可匹配与可不匹配的时候,优先匹配$p = '/\d+\-\d+/';$str = "我的电话是010-12345678";preg_match($p, $str, $match);echo $match[0]; //结果为:010-12345678懒惰模式(匹配字符?):在可匹配与可不匹配的时候,优先不匹配$p = '/\d?\-\d?/';$str = "我的电话是010-12345678";preg_match($p, $str, $match);echo $match[0]; //结果为:0-1当我们确切的知道所匹配的字符长度的时候,可以使用{}指定匹配字符数$p = '/\d{3}\-\d{8}/';$str = "我的电话是010-12345678";preg_match($p, $str, $match);echo $match[0]; //结果为:010-12345678preg_match_all匹配所有:<?php$p = "/<tr><td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<\/tr>/i";$str = "<table> <tr><td>Eric</td><td>25</td></tr> <tr><td>John</td><td>26</td></tr> </table>";preg_match_all($p, $str, $matches);print_r($matches);搜索和替换:$string = 'April 15, 2014';$pattern = '/(\w+) (\d+), (\d+)/i';$replacement = '$3, ${1} $2';echo preg_replace($pattern, $replacement, $string); //结果为:2014, April 15替换多余的空格:$str = 'one two';$str = preg_replace('/\s+/', ' ', $str);echo $str; // 结果改变为'one two'
六.Cookies
设置Cookie:<?phpsetcookie('test', time());ob_start();print_r($_COOKIE); $content = ob_get_contents();$content = str_replace(" ", ' ', $content);ob_clean();header("content-type:text/html; charset=utf-8");echo 'current Cookie =';echo nl2br($content);删除Cookie:setcookie('test', '', time()-1); Cookie路径:cookie中的路径用来控制设置的cookie在哪个路径下有效,默认为'/',在所有路径下都有,当设定了其他路径之后,则只在设定的路径以及子路径下有效,例如:setcookie('test', time(), 0, '/path');上面的设置会使test在/path以及子路径/path/abc下都有效,但是在根目录下就读取不到test的cookie值。Session:<?php//开始使用sessionsession_start();//设置一个session$_SESSION['test'] = time();//显示当前的session_idecho "session_id:".session_id();echo "<br>";//读取session值echo $_SESSION['test'];//销毁一个sessionunset($_SESSION['test']);echo "<br>";var_dump($_SESSION);打印结果:session_id:s1uhfu4egnef47gc0jennpuhr21423131115array empty设置Session:<?php//在这里设置name的session值为jobssession_start();$_SESSION['name'] = 'jobs';echo $_SESSION['name'];删除Session:删除当前:session_start();$_SESSION['name'] = 'jobs';unset($_SESSION['name']);echo $_SESSION['name']; //提示name不存在删除所有:session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();session_destroy();值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();unset($_SESSION);session_destroy(); var_dump($_SESSION); //此时已为空
0 0
- PHP 基础复习
- PHP基础复习
- php复习 第十三天 mysql基础1
- php复习 第十三天 mysql基础2
- php复习 第十三天 mysql基础3
- php复习 第十三天 mysql基础4
- PHP复习第一天基础语法
- php复习
- php复习
- 基础复习
- 基础复习
- 基础复习
- 基础复习
- php编程基础复习------环境的安装与配置
- PHP假期复习(七)---面向对象基础
- 复习MySQL(基础复习)
- 复习php魔术方法
- php语法复习
- chrome离线提示小恐龙游戏刷分小bug~
- yii2 csrf
- git常用命令总结
- CFNetwork编程指南(中文版)
- hnu13150(hdu 4565)SO EASY!(矩阵快速幂)
- PHP 基础复习
- cURL的错误代码
- NYOJ 268 荷兰国旗问题
- [转]搜索引擎的文档相关性计算和检索模型(BM25/TF-IDF)
- 夹痴掏侥娜废用丫圆映
- 初学Python之发布自己的模块
- 解决 Error:No suitable device found: no device found for connection "System eth0"
- 缘分既然默许你离去
- 乱谈--数字电视节目推荐系统