菜蜂 发表于 2015-8-24 10:47:42

PHP笔记(PHP初级篇)

  学习完HTML和CSS后,终于要开始学习PHP啦!前面的铺垫只为后路的畅顺!
  PHP环境搭建:
  企业中常用到的环境是:Linux+Apache+MySQL+PHP
  学习环境是:Windows+Apache+MySQL+PHP
  工具

[*]Apache 2.4.4
[*]MySQL 5.6.23
[*]PHP 5.5.22
  安装教程:php 2014.9.5安装教程
  PHP源码学习网站

[*]站长之家
[*]源码天堂
[*]脚本之家
[*]源码之家
[*]A5源码
  帮助文档:php_enhanced_en.chm
  PHP概述

[*]PHP(HypertextPerprocessor)超级文本预处理器
[*]PHP是一种在服务器端执行的嵌入HTML文档的脚本语言
[*]是一种网站开发语言(B/S结构)
[*]支持大多数操作系统和数据库、服务器
[*]开源
  PHP开发步骤

[*]编写源文件
[*]将原文件上传到web服务器中
[*]使用浏览器访问
  PHP标记格式

[*]XML风格:<?php … ?>    (推荐)
[*]简短风格:<? ... ?>    (需要开启php.ini中的short_open_tag)
[*]asp风格:<% ...%>    (需要开启php.ini中的asp_tags)
[*]脚本风格:<script language="php"> ... </script>
※PHP编码必须使用utf-8无BOM格式,因为其他格式会有额外的输出,导致header函数报错
※纯PHP文件,建议结束不用“?>”,避免加载该文件时出错,导致header函数报错
PHP注释

[*]PHP的注释不会加载到网页中,不影响网页加载速度;而HTML的注释会加载到网页中,影响网页加载速度
[*]单行注释:// ...
[*]多行注释:/* ...*/,不允许嵌套
[*]脚本注释:# ... ,也是单行注释
[*]注释作用

[*]解释代码,一般写在被解释代码的上边或右边
[*]调试代码,使不注释代码不能执行,来检查错误

  变量:会改变的量

[*]作用:保存一个值
[*]命名:

[*]必须以“$”开头
[*]第二位必须为大小写字母或下划线
[*]后接大小写字母、下划线和数字
[*]大小写敏感
[*]无需定义类型

[*]声明

[*]PHP是一种非常弱的类型语言,变量没有固定的数据类型
[*]变量第一次赋值时,被声明

[*]赋值

[*]变量可直接赋值,无需转换类型
[*]可连续赋值,如“$a=$b=$c=4”

[*]范围

[*]局部变量:在函数中声明的变量,只能在函数中使用
[*]全局变量:从变量声明开始知道程序结束,都能使用
[*]静态变量:在函数中多次调用中共同使用

[*]存储在静态代码段中
[*]同一函数,多次调用,只在第一次调用时声明到内存中


  可变变量:一个变量的变量名可以动态的设置和使用

  引用传值:不同的名字访问同一个变量内容

  ※在函数中,使用关键字global调用全局变量
  ※函数中,使用关键字static声明静态变量
  基本数据类型

[*]标量类型

[*]整型(integer):

[*]十进制:$a = 100;
[*]八进制:$a = 0123;
[*]十六进制:$a = 0x1A;
[*]负数:$a = -100;
[*]科学计数法:$a = 1E3;(1*10的3次方)

[*]浮点型(float/double):

[*]有小数点即浮点类型:$b = 100.01;
[*] 科学计数法:

[*]$b = 2.2E5;(2.2*10的5次方)
[*]$b = 7e-5;(7*10的-5次方)

[*]负数:$b = -100.01; 
[*]整型超出范围,自动转换为浮点类型


  ※浮点数精度有限,不要进行“==”对比,不能进行高精度运算

[*]

[*]

[*]布尔类型(boolean):$c = true;

[*]取值:true or false

[*]类型转换时,以下值被认为是false

[*]boolean值:false
[*]整型值:0
[*]浮点值:0.0
[*]空字符串和字符串"0"
[*]没有成员变量的数组
[*]没有单元的对象(仅适用于PHP4)
[*]特殊类型null


[*]字符串类型:$d = "abc";

[*]只要用引号引起来的,都是字符串类型
[*]单引号与双引号区别:

[*]双引号内的变量不会解析,单引号不会解析
[*]双引号中的变量要与其他字符分开时,用大括号分割
[*]单引号与双引号可以相互包含在内,作为字符使用
[*]单引号中的转义字符会失去效果(除“\'”和“\\”),双引号中的转义字符则不会
[*]双引号效率要低于单引号

[*]字符串连接符“."
[*]定界符:


  <<<定界符名称
  ......
  定界符名称

[*]

[*]

[*]

[*]定界符结尾时,必须顶置独占一行
[*]可以解析变量和转义字符



[*]复合类型

[*]数组类型:$e = array(1,2,3);
[*]对象类型:$f = new object();

[*]特殊类型

[*]null类型:

[*]赋值:$g = null;
[*]为赋值的变量
[*]赋值后,被unset()函数销毁的变量

[*]资源类型:$h = fopen("http://www.baidu.com","r");

  ※使用var_dump()函数查看数据类型;
  ※使用unset()函数,销毁变量
  ※使用isset()函数判断变量是否被赋值,当变量为null类型时,返回false,否则返回true
  ※使用empty()函数判断变量是否为空,若变量转换为布尔类型为false情况,则返回true,否则返回false
  ※判断数据类型,使用is_mixed,如is_int,判断是否为整型;is_string,判断是否为字符串类型
  伪数据类型:为确保帮助文档的易读性,而设计出来的类型,编写代码时不使用

[*]mixed:任意数据类型
[*]number:数字,包括integer和float
[*]callback:回调函数
  数据类型转换

[*]自动数据类型转换

[*]bool和null→integer:直接输出时,false和null无任何输出,做运算时,转为0;
[*]string→integer:从左到右,将遇到的第一个整数转换为integer类型,遇到“1e2”之类的科学计数法时,也会转换
[*]string→float:从左到右,将遇到的第一个小数转换为float类型,遇到“1.0e2”之类的科学计数法时,也会转换

[*]强制数据类型转换

[*]在变量前使用(mixed),来强制转换数据类型,如$a = (int)$a;

  常量:亘古不变的量

[*]命名:与变量一样,但不以“$”开头,默认区分大小写
[*]定义:使用define()函数,bool define(string name,mixed value,) ;

[*]name:常量名
[*]value:常量值,只能使用标量数据类型
[*]case_insensitive:是否大小写敏感,为true时,大小写不敏感

[*]特点:

[*]定义后,不能更改,不能销毁
[*]范围是全局的
[*]名称建议使用大写,与变量区分

  ※使用get_define_constants()函数查看已定义的常量
  ※系统已自带大量的常量,常用的__LINE__、__FILE__、__CLASS__、__FANCTION__、__METHOD__、PHP_OS、PHP_VERSION
  PHP运算符

[*]一元运算符:只有一个操作数:++、--、!

[*]

[*]bool值自增或自减,值不变


[*]二元运算符:有两个操作数;

[*]算术运算符:+、-、*、/、%

[*]bool值进行二元运算,true作为1,false作为0

[*]字符串运算符:.、.=

[*]连接字符串的运算符

[*]赋值运算符:=、+=、-=、*=、/=、%=、.=

[*]+=、-=、*=、/=、.=都是先赋值后运算的

[*]


[*]比较运算符:==、>、>=、<、<=、!=、===、!==
[*]逻辑运算符:and或&&、&、or或||、|、not或!、xor

[*]||和or、&&和and会使逻辑短路,即左边的表达式符合条件,则不执行右边
[*]&和|不会使逻辑短路,所有表达式都会执行

[*]位运算符:&、|、^、~、>>、<<

[*]三元运算符:有三个操作数;? :
[*]特殊运算符:

[*]``(反引号):将反引号中的内容作为系统命令执行

[*]等价于shell_exec()函数

[*]@:错误控制运算符,放在表达式前,屏蔽该表达式可能产生的notice和warning错误,致命错误无法屏蔽;@exp
[*]=>:数组下标指定符,通过此符号指定数组的键与值;key => value
[*]->:对象成员访问符,访问对象中的成员属性和成员方法
[*]instanceof:类型运算符,用来测定一个给定的对象是否来自指定的对象类;对象 instanceof 类名

  
  HTML的特点:

[*]基于请求/响应
[*]无状态
[*]请求方式:GET和POST
  GET请求

[*]使用form表单发送请求
[*]直接在URL中输入参数
[*]使用超链接将URL连同参数一起发送请求;<a href="./send.php?user=admin&pass=123">超链接</a>
[*]使用全局变量$_GET[]接收请求
  PHP基本结构

[*]顺序结构:程序按照至上而下的流程执行
[*]分支结构:

[*]单一条件分支结构:if(exp)
[*]双向条件分支结构:if(exp)...else...
[*]多项条件分支结构:if(exp)...elseif/(else if)(exp2)... ...else...、switch...case...
[*]巢状条件分支结构:分支结构嵌套使用

[*]循环结构

[*]条件型循环while(exp)...:先判断,再循环
[*]do...while(exp)...:先循环,再判断
[*]计数型循环for(exp)...:先判断,再循环
[*]foreach(array as varible):数组遍历循环

  ※break:终止当前循环,并跳出循环
  ※continue:终止单签循环,并进行下一次循环
  ※exit()和die():终止程序运行
  ※count()函数,统计数组元素个数
  
  函数

[*]定义:

[*]被命名的
[*]独立的代码段
[*]执行特定任务
[*]可以返回特定的值
[*]调用后,才能执行

[*]优点

[*]提高代码的可重用性
[*]提高程序的可维护性
[*]提高程序的可靠性
[*]提高程序的开发效率
[*]控制程序的复杂性

[*]声明

[*]function 函数名([参数]*){

  函数体
  
  }

[*]

[*]声明之前调用和声明之后调用均可
[*]命名与变量命名相似,不用$开头,大小写不敏感;推荐驼峰命名法
[*]函数名不能重名,注意系统函数

[*]参数:可以向函数传参,修改函数的属性和行为

[*]形参:声明函数时,定义的参数
[*]实参:调用参数时,传给函数的值

[*]返回值:

[*]使用return语句,返回特定值
[*]return会终止函数执行

[*]变量函数:

[*]将函数名赋值给变量,调用时,在变量名后加“()”


  ※具有相同功能的函数,优先使用系统函数

[*]分类

[*]常规函数:有固定数量的参数,参数传递的方式为值传递引用传递函数:有固定数量的参数,参数的传递方式为引用传递

[*]声明:在形参前面使用“&”,表示该参数为引用传递参数
[*]调用:该参数的实参必须为变量,不可为常量
默认函数:含有可选参数,在查看该函数使用时,“[]”内的参数表示可选参数

[*]声明:可选形参声明同时赋值
[*]调用:形参与实参从左到右相对应,可选参数可无实参对应

[*]不定函数:参数的数量不固定,可以没有,也可以无数个,查看该函数使用时,“...”表示参数无限制个数

[*]声明:声明函数时,不声明形参
[*]调用:直接在调用函数时,使用多个实参
[*]实现:

[*]使用func_get_args()方法取得参数,并返回数组
[*]使用func_get_arg(int $arg_num)方法取得指定的参数,返回参数值

[*]

[*]回调函数:参数中包含函数

[*]声明:形参直接用变量声明
[*]调用:实参为被调用的函数时,传递函数名称字符串
[*]实现:

[*]使用代表函数的形参,作为变量函数使用

[*]


[*]内部函数:函数内部的函数,一般用于实现函数的子功能
[*]递归函数:函数内部调用自己重用函数:使用自己定义的函数库,被包含的文件直接运行

[*]include:动态包含,即包含的文件名是动态的,根据需要选择;出现问题,发出警告
[*]require:静态包含,即包含的文件名是静态的,编写时固定文件;出现问题,发出致命错误
[*]include_once:与include相似,但文件只包含一次
[*]require_once:与require相似,但文件只包含一次

  系统指令:

[*]用法一:指令名 参数
[*]用法二:指令名(参数)
  数组:管理和操作一组变量的复合变量

[*]可存储任意类型数据
[*]可存储任意数量数据
[*]一维数组:数组中的元素为非数组
[*]数组的数组:数组中的元素为数组
[*]索引数组:键为整数的数组
[*]关联数组:键为字符串的数组
[*]元素:

[*]组成:键值对
[*]通过键寻找值

[*]声明

[*]直接为数组元素赋值

[*]给每个元素一一赋值
[*]如果索引下标未给出,默认从0开始,若给出,则从最大下标增1
[*]同一下标重复赋值,覆盖
[*]混合数组,关联不影响索引

[*]使用array函数

[*]默认为索引数组
[*]若想使用关联,需使用“=>”指定键值对,key=>value;
[*]元素之间使用“,”分隔开

[*]使用其他函数定义或返回数组

[*]使用

[*]一维数组:array_name
[*]多维数组:array_name...

[*]遍历

[*]for语句遍历数组

[*]php中不常用,由于php中存在关联数组,使用for循环不能遍历

[*]foreach语句遍历数组

[*]foreach(数组变量 as 变量值){


  循环体
  }

[*]

[*]

[*]循环次数由元素个数决定
[*]每次循环都会将数组中的元素值赋给变量值
[*]foreach(数组变量 as 下标变量 => 变量值){


  循环体
  }

[*]

[*]

[*]每次循环,元素下标赋给下标变量,元素值赋给变量值
[*]多维数组遍历,使用多个foreach语句,多少维就多少个foreach语句

[*]使用while、list()、each()组合遍历数组

[*]list()=array(),将一个函数赋值给这个函数,只能使用索引数组
[*]each(),将数组分解成键值对
[*]while,循环each(),取键值对




[*] 数组内部指针函数

[*]next():指向下一位
[*]prev():指向上一位
[*]reset():指针复位
[*]end():指针指向末尾
[*]current():取出当前指针的元素值
[*]key():取出当前指针的元素键

[*] 预定义数组:也称为超全局数组、自动全局变量

[*]不可修改,不用定义可直接使用,在脚本的任何地方
[*] $_GET //经由URL请求提交至脚本的变量
$_POST //经由HTTP POST 方法提交到脚本的变量
$_REQUEST //经由GET , POST和COOKIE机制提交 到脚本的变量
$_FILES //经由http post方法文件上传而提交至脚本的变量
$_COOKIE //会话控制
$_SESSION //会话控制
$_ENV //执行环境提交至脚本的变量
$_SERVER //变量由WEB服务器设定的,或直接和当前脚本的执行环境相关联
$GLOBALS //只要是当前脚本有效的变量都在这里,数组的键名为全局脚本的名称

[*] 数组键/值操作的相关函数

[*]array_values():查询某键的值
[*]array_keys():查询某值的键
[*]in_array():检查某值是否存在数组中
[*]array_key_exists():检查某下标是否存在数组中
[*]array_flip():将数组的键值调换,如果调换后,键相同,则被覆盖
[*]array_reverse():将数组的顺序反转

[*]统计元素的个数和唯一性

[*]count()、sizeof():统计数组中的元素个数,可统计多维数组
[*]array_count_values():统计数组中值出现的次数
[*]array_unique():移除数组中重复的值

[*]使用回调函数处理数组的函数

[*]array_filter():用回调函数过滤数组中的单元,回调函数自定义
[*]array_walk():数组中的每个元素应用回调函数,回调函数自定义
[*]array_map():返回用户自定义函数作用后的数组,自定义函数参数的个数与数组个数一致

[*]常用的数组排序函数

[*]sort():从小到大排序,可作为数字和字符串排序,会破坏键值关系
[*]rsort():从大到小排序,可作为数字和字符串排序 ,会破坏键值关系
[*]ksort():按键对数组进行升序排列
[*]krsort():按键对数组进行降序排列
[*]asort():根据元素值进行升序排列,不会破坏键值关系
[*]arsort():根据元素值进行降序排列 ,不会破坏键值关系
[*]natsort():自然数排序,区分大小写
[*]natcasesort():自然数排序,不区分大小写
[*]usort():用户自定义函数进行升序排列
[*]uasort():用户自定义函数进行降序排列
[*]uksort():用户自定义函数进行按键升序排列

[*]拆分、合并、分解、结合数组的函数

[*]array_slice():截取数组中,从指定下标开始的指定个数的元素
[*]array_splice():删除数组中,从指定下标开始的指定个数的元素,并可用指定的元素取代
[*]array_combine():将两个数组结合,第一个数组的值作为新数组的键,第二个数组的值作为新数组的值
[*]array_merge():合并多数组,键名相同,覆盖;索引数组,直接合并,重新排序
[*]array_intersect():求多个数组的交集
[*]array_diff():求多个数组的差集

[*]数组和数据结构函数

[*]array_pop():出栈函数,弹出数组中的最后一个元素
[*]array_unshift():入队函数,将元素加入到第一个位置
[*]array_shift():出队函数,将第一个元素弹出
[*]unset():删除任意位置的元素

[*]其他数组函数

[*]array_rand():任意取出数组中的元素的键
[*]shuffle():打乱数组中的元素
[*]array_sum():将数组中的所有元素值相加求和
[*]range():函数创建并返回一个包含指定范围的元素的数组

  面向对象编程

[*]对象的三大特性:封装、继承、多态
[*]成员属性:变量,前面必须有修饰词
[*]成员方法:函数
[*]类的声明:

[*]一个文件只保存一个类,文件名中包含类名
[*]建议文件名:类名.class.php
[*]类名:每个单词的首字母大写,名字要有意义
[*][关键字] class 类名{

  成员
  }

[*]对象实例化:

[*]只有对象才在内存有存储空间
[*]使用“new”关键字实例化对象

[*]对象的使用:

[*]对象的成员必须通过对象的引用来访问
[*]对象 -> 成员(属性不要“$”符)
[*]类内部调用成员使用$this变量作为本对象

[*]构造方法

[*]对象创建完成后,第一个自动调用的方法
[*]常用于为属性初始化
[*]定义构造方法

[*]PHP4,与类名相同的方法
[*]PHP5,使用魔术方法__construct()声明构造方法

[*]优点:构造方法不用随着类名的改变而改变



[*]对象释放

[*]将对象变量设为null
[*]程序执行完成
析构方法:

[*]PHP有垃圾回收器,对象一旦成为垃圾,立刻被回收
[*]对象被释放最后一个被自动调用的方法
[*]常用于关闭资源,清理等工作
[*]使用魔术方法__destract声明析构方法

[*]魔术方法:

[*]在类中写入该方法,实例化对象后,跟随对象
[*]方法名称固定(系统提供的)
[*]每一个魔术方法都是在某时刻为了完成某项功能而自动调用的
[*]都是以“__”开头的

[*]封装性

[*]将对象的成员结合成一个独立的单位,并尽可能隐藏对象的内部细节
[*]方法的封装:

[*]private:私有的,自能在对象内部使用,使用$this调用
[*]public:公有的,对象内外、子类都能使用
[*]protected:被保护的,对象内以及子类可使用

[*]属性的封装:

[*]不让外部修改
[*]修改和获取可使用set()和get()方法
[*]封装的魔术方法

[*]__set($proName):直接设置私有成员属性时调用的方法,必须用public修饰
[*]__get($proName,ProValue):直接获取私有成员属性时调用的方法
[*]__isset($proName):直接使用isset()查看对象中是否存在某个私有属性时,自动调用
[*]__unset($proName):直接使用unset()删除对象中的私有属性时,自动调用



[*]继承性

[*]用子类扩展父类
[*]父类 = 基类;子类 = 派生类
[*]共享相同的属性和方法,提高可维护性
[*]PHP只能单继承,也就是只能有一个父类
[*]使用extends表示继承于

[*]class 子类 extends 父类 {


  成员
  }

[*]

[*]私有(private)的成员,子类中不能访问,受保护(protected)的成员,子类能访问,类的外部不能使用
[*]子类可以声明与父类相同的方法,子类覆盖父类的方法
[*]直接使用父类功能,使用“::”调用父类的方法,即父类::父类方法
[*]使用关键字“parent”表示父类,即parent::父类方法
[*]子类覆盖父类方法,权限可扩大不可缩小

[*]面向对象的常用关键字

[*]final

[*]使用final修饰的类不能被继承,使用final修饰的方法不能被覆盖
[*]不能修饰属性,只能修饰类和方法

[*]static

[*]被修饰的成员使用类名访问,不要使用对象访问,即使用“::”调用
[*]用static修饰的属性,可以被同一类的所有对象共享
[*]用static修饰的方法,不能访问非static成员
[*]可修饰属性和方法,不能修饰类
[*]类在第一次加载时,分配在内存中
[*]使用关键字“self”表示本类

[*]const

[*]只能修饰成员属性
[*]在类中声明常量
[*]被修饰的成员使用类名访问,不要使用对象访问,即使用“::”调用
[*]声明时,要赋初值


[*]面向对象的常用魔术方法

[*]__call($name,$args)

[*]对象调用不存在的方法时,自动调用
[*]$name表示调用的方法名,$args表示调用的方法的参数

[*]__toString()

[*]快速读取对象为字符串
[*]直接输出对象引用时,调用的方法
[*]必须return一个字符串

[*]__sleep()

[*]序列化时,自动调用的方法
[*]常用于部分序列化,返回数组,数组中的元素为需要序列化的成员属性

[*]__wakeup

[*]反序列化时,自动调用的方法
[*]常用于反序列化时初始化

[*]__clone()

[*]使用“clone”关键字,克隆对象

[*]$p = clone $p1;

[*]当使用“clone”关键字克隆对象时,调用
[*]$this,代表克隆的对象,$that,代表原本的对象
__autolead($name)

[*]唯一一个不再类中声明的方法,在调用的类中声明
[*]$name代表被调用的类的类名


[*]对象串行化(序列化):将对象转化为二进制字符串

[*]将对象长期存储在数据库或文件中时使用
[*]将对象在多个PHP文件中传输使用
[*]使用serilize($name)函数序列化,$name表示对象名
[*]使用unserilize($string)函数反序列化,$string表示二进制字符串

[*]抽象类

[*]抽象方法:使用abstract修饰,没有方法体的方法(没有大括号,直接以“;”结束)
[*]抽象类:使用abstract修饰,并包含有方法的类,就是抽象类
[*]抽象类不能直接实例化对象
[*]使用:子类继承抽象类,覆盖父类抽象方法
[*]作用:定义一些规范,让子类实现,利于团队开发

[*]接口

[*]作用与抽象类相似
[*]成员属性只能是常量
[*]成员访问权限必须为public
[*]方法必须为抽象方法(不用abstract修饰)
[*]实现:接口与接口继承关系,使用extends,接口与类实现关系,使用implements
[*]子类可实现多接口,接口间用“,”隔开
[*]接口声明:使用interface声明类
[*]多态:一个对外接口,多个内部实现方法

  字符串处理函数

[*]字符串特点

[*]若函数中放入的数据不是字符串,会自动转换为字符串
[*]可以将字符串视为数组,如,定义了字符串$str后,可使用$str取出第四个字母
[*]在php字符串处理函数都不是直接修改字符串,而是返回修改后的字符串的

[*]字符串输出函数

[*]echo():可不加“()”,不加“()”时,可多参数连用
[*]print():效率不如echo高,如果传输成功,返回true,失败返回false
[*]die()/exit():输出字符串并退出程序,若参数使用整型数字,表示退出状态
[*]printf():格式化输出字符串
[*]sprintf():格式化转换字符串

[*]格式化字符串函数

[*]ltrim():删除左边的特定字符,默认删除空白字符
[*]rtrim():删除右边的特定字符,默认删除空白字符
[*]trim():删除两边的特定字符,默认删除空白字符
[*]str_pad():补充特定字符,默认补充空格

[*]大小写转换函数

[*]strtoupper():将字符串转换为大写字母
[*]strtolower():将字符串转换为小写字母
[*]ucfirst():将字符串首字母大写
[*]ucword():将单词首字母大写

[*]和HTML标签相关的字符串格式化

[*]nl2br():在字符串中的换行之前加上<br />;
[*]htmlspecialchars():将字符串中的html标记中的“ &、<、>、"、' ”转化为相应的HTML实体
[*]htmllentities():将字符串中的所有html标记中的特殊字符转化为相应的HTML实体,但在没有使用第三个参数时,非英文乱码
[*]strip_tags():选择性删除HTML标签
[*]stripslashes():删除反斜杠(\)

[*]其他的字符串格式化函数

[*]number_format():通过千位分组来格式化数字
[*]strrev():反转字符串
[*]md5():加密字符串

[*]md5_flie():文件加密


[*]字符串比较函数

[*]strcmp():字符串按字节顺序比较,大小写敏感
[*]strcasecmp():字符串按字节顺序比较,大小写不敏感
[*]strnatcmp():字符串按自然数比较,即当遇到数字时,按自然数比较,如字符串“str12”是大于“str2”的

[*]字符串的匹配、查找、替换和分割

[*]strstr()(stristr()):精确查找字符串,将查找到的字符串以及后面的内容返回,大小写敏感(大小写不敏感)
[*]strpos()(stripos()):精确查找字符串,返回查找到的字符串第一次出现的位置,大小写敏感(大小写不敏感)
[*]str_replace()(str_ireplace()):字符串替换函数,大小写敏感(大小写不敏感)

[*]字符串替换字符串:搜索的参数为字符串,替换的参数也为字符串,搜索到的所有字符串都被替换字符串取代
[*]字符串替换数组:搜索的参数为数组,替换的参数为字符串,搜索到数组中的字符串都被替换字符串取代
[*]数组替换数组:搜索的参数为数组,替换的参数也为数组,两数组之间搜索与替换关系一一对应

[*]explode():以某字符进行分割,返回数组

  正则表达式

[*]正则表达式一般进行模糊匹配,字符串处理函数一般进行精确匹配
[*]描述字符串排列模式的一种自定义语法规则
[*]能用字符串处理函数完成的任务就不要用正则表达式
[*]没有和相应函数搭配使用,正则表达式只是特殊的字符串
[*]PHP中提供了Perl和Posix两种表达式函数,Perl效率较高
[*]Perl语法

[*]定界符:

[*]作为正则表达式开始和结束标识的字符
[*]除数字、字母和反斜杠(\)以外的字符,均可作为定界符
[*]常用正斜杆作为定界符

[*]原子

[*]正则表达式的最小单位,包括打印字符和非打印字符,可单独使用
[*]元字符作为原子,可在元字符前使用“\”转化为原子
[*]自定义原子表,用“[]”表示匹配里面中的任一字符

[*]元字符

[*]特殊字符,不能单独出现,必须搭配原子使用
[*].        匹配除换行符以外的任意字符
\b       匹配单词的开始或结束
^        匹配行的开始
$      匹配行的结束


  *         重复零次或更多次
        +        重复一次或更多次
        ?        重复零次或一次
        {n}      重复n次
        {n,}     重复n次或更多次
        {n,m}    重复n到m次
  |       表示或者关系,优先级最低
  ()       将小原子合成大原子;提高优先级;作为子模式使用(在“(”后面“?:”可取消子模式);反向引用

[*]

[*]模式修正符

[*]存放于定界符之外
[*]用于调优正则表达式
[*]i        不区分大小写
m        可将字符串视为多行开头
s         使“.”能表示换行符
x       模式中的空白忽略不计


[*]正则表达式函数

[*]字符串匹配与查找

[*]preg_match():将字符串与正则表达式进行一次匹配,第三个参数包含匹配的到的字符串和子模式
[*]preg_match_all():将字符串与正则表达式匹配,匹配出符合的字符串,第三个参数用于存储匹配到的数组

[*]字符串替换

[*]preg_replace():执行一个正则表达式的搜索和替换,可选参数设置替换次数

[*]字符串替换字符串:搜索的参数为正则表达式,替换的参数也为字符串,搜索到的所有字符串都被替换字符串取代
[*]数组替换数组:搜索的参数为数组正则表达式数组,替换的参数为与之相对应的数组,搜索到数组中的字符串都被替换字符串取代

[*]preg_replace_callback():执行一个正则表达式的搜索和替换,用回调函数定义替换

[*]字符串分割

[*]preg_split():将字符串以正则表达式分割,返回数组
[*]preg_quote():将字符串中,与正则表达式特殊字符的相同的字符转换为原子


  常用的正则表达式大全:常用正则表达式大全
  到这里,PHP的基础就有了,基本能看得懂代码!
页: [1]
查看完整版本: PHP笔记(PHP初级篇)