php是运行在服务端的脚本语言.
特点:
1、运行在服务器端:学会了PHP,就可以指挥服务器给你干活,甚至是搞破坏_(千万不能真这么做咯),WEB网站的大部分数据都是存储在服务器端的,PHP就是用来处理这些存储在服务器的数据的(功能强大吧)。
2、跨平台:服务器可以是多种平台的服务器,比如Linux、Windows、Unix,你都可以指挥(不用怕只能指挥一种服务器啦吧)。
3、脚本语言:它是通过编写脚本,也就是一行行的计算机指令(也可以理解为特定的英文单词),来指挥服务器来工作的,因此,在编写PHP的过程其实就是与老外(服务器成老外啦)交流的过程,交流的语言就是PHP。
4、免费:免费使用(天下还真有免费的午餐)。
#初试PHP #
可以在页面中编写PHP代码写在标签之间,但注意后面的?>是可以省略的。
我们学习一个php指令: echo(是PHp的输出语句) 让服务器打印一串字符串(字符串使用双引号括起来).
输出语句可以直接做算法:
结果输出的就是36
关于输出字符串需要注意的一点,php的连接符是 . 也就是字符串可以使用双引号也可以使用单引号来
需要说明的一点就是我习惯在写完字符串之后空一格去写结束符,php是通不过的,php写完直接写结束符,之后结尾就行!最后的php也是可以省略的!
关于Php的注释语句:
html的注释语句是 css的注释语句是: /注释语句/ pHP的注释语句: // ok
LAMPServer(LAMP): Linux 系统 Apache MySQL PHP
WAMPServer(Wamp): windowns系统 Apache MySQL PHP
其他的都有对应的教程,我们也已经都安装了!下面要做的是PHP的下载(是运行在服务器上的脚本语言):
对于wampServer的具体的解释如下: WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。
下载的地址就是 WAMPServer.com 需要,直接在百度搜索wampserver下载,根据自己的电脑下载对应的版本!之后就是安装;
开始安装,之后的提示都可以看懂!我们直接展示怎么验证我们安转的wampserver安装成功了!(一个是浏览器的选择,一个是textediter)
我们看到启动phpMyAdmin默认的用户名底root ,是no password
我们启动这个wampserver程序,出现一个错误:
解决的方法:
显示一个连接吧!之后我们大体说一下子过程:
连接地址:http://jingyan.baidu.com/article/4f7d57129fa86e1a201927de.html
我们首先输入: http://www.microsoft.com/zh-CN/download/details.aspx?id=30679 之后进入点击下载,会进入一个页面:
选择自己匹配的下载,三个一个是arm的一个是64位和32位的,我们选择64位的下载,下载安装,文件的大小是很小的,我们安转完成之后再次去查看我们的localhost就可以验证是不是wampserver安装成功,并且解决掉了这个错误.
验证: 浏览器输入: localhost
我们可以看到的默认端口是80,MySQL的版本的版本是5.7.14,默认的端口是3306
我们在访问的时候其实就是和访问apache的是一样的,我们打开localhost默认的端口是80,回去访问我们的安装目录下面的
D:\wamp64\www先启动index.php.
而且我们的 D:\wamp64就是我们的安装目录.我们需要修改的就是网站的根目录使用我们自己定义的位置,是的安转的wamp安装目录和网站的根目录进行分开.
第一个修改的就是Apache的配置信息
httpd.config: 修改documentroot和directory
httpdv-hosts.config:
修改我们的wamp的www目录;
这个目录我们点击直接打开会直接打开到我们的安转目录,我们需要修改的就是wamp的配置信息
修改的就是wampmanager.ini文件中的 decriptiom(描述)是 “www目录” 修改我们的名称 之后修改的就是 filename
类似的我们修改: wampmanager.tpl文件中的修改的都是一样的!
再次我们不打算修改了!我们在安装的目录下面创建demo文件,来单独存放我们的网站等文件.
wamp多站点的配置需要使用的是就是httpd-vhosta.conf
直接上xampp下载,下载之后就是安装,之后就是弹出一个界面来控制apache和tomcat的开启mysql的开启和配置等信息!
那个开启不了,一般是端口在占用,找到关闭或者你的电脑里面安装过单独的程序,比如我的里面安装过mysql,之后开始启动没有sql的时候就是不成功,之后卸载之后就ok了!
变量的声明: $var = “赋值”;
出去复合变量,一个变量智能存放一种类型的值,后面的会替换前面的值.
";
$var = "来到就要学习,每天进步一点点";
echo $var;
?>
最后的输出就是 来到就要学习,每天进步一点点.
在PHp中变量的声明是 $符号,变量的名称的命名应该差不多.后面是复制,最后一个结束符号(?
变量的命名规则:
1、变量名必须以字母或下划线 “_”开头,如” n a m e ” , ” _name”,” name”,”name” ,”$name2”等,但是”$9name”是不对的。
2、变量名只能由字母、数字、以及“_”组成,还能包含汉字。如” q q ” , ” _qq”,” qq”,”qq308” ,” m y a p p l e ” , “ 比 如 " my_apple”,“比如" myapple”,“比如"name我等”,但是”$name*”是不对的。
3、变量名不允许包含空格。当变量名由多个单词组成,建议使用“_”进行分隔(比如 $my_apple),俗称下划线法,或者以大写字母开头比如 $myApple,俗称骆驼式命名法(也称驼峰命名法)。
特别需要注意的是,在PHP中变量名是区分大小写的,如“ m y b o o k ” 与 “ my_book”与“ mybook”与“my_Book”代表两个不同的变量。
我们看看PHP中的数据类型:
在PHP中,支持8种原始类型,其中包括四种标量类型、两种复合类型和两种特殊类型。PHP是一门松散类型的语言,不必向PHP声明变量的数据类型,PHP会自动把变量转换为自动的数据类型,一定程度降低了学习PHP的门槛。如果接触过C语言或者JAVA语言,就会发现在声明变量的时候需要声明变量的数据类型
第一个是字符串数据类型:
$var_string = “123”;
第二个是整形数据类型
$n = 10;
第三个是浮点型;
$f =123.00;
最后一个是数组:
$var_array = array(“123”);
PHP的标量类型:
布尔类型(boolean):只有两个值,一个是TRUE,另一个FALSE,可以理解为是或否。它不区分大小写,也就是说”TRUE”和“true”效果是一样的。主要用在条件结构(条件结构在后面部分会介绍)中,例如判断是否满足条件的时候,是用“true”表示满足,用“false”表示不满足。需要注意的是,当我们用”echo”指令输出布尔类型时,如果是“true”则输出的是“1”,“false”则什么也不输出。我们可以使用“var_dump”函数,获取它真正的数据类型。
" ;
var_dump($flag);
?>
输出的结果是: $flag = 1(true输出是1,false不会输出 ,true和false是不区分大小写的) 输出的是true
PHP的整形可以表示十进制和十六进制和八进制都可以,复制的时候八进制前面加0,十六进制前面加ox;
浮点型(浮点数、双精度数或实数),也就是通常说的小数,可以用小数点或者科学计数法表示。科学计数法可以使用小写的e,也可以使用大写的E。
PHP中的标量类型之字符串.
我们需要在字符串中添加引号的方法:
第一种: 直接在单引号嵌套双引号
第二种: 直接在双引号嵌套单引号
第三种: 直接使用 ’ '和" " 完成.
当双引号中包含变量时,变量会与双引号中的内容连接在一起; 也就是Svar会将复制的字符串连接到一起
当单引号中包含变量时,变量会被当做字符串输出。 也就是没有什么意义,作为一个字符串处理,不做变量处理.
PHP中使用Heredoc结构形式来表示很长的字符串(<<<开始GOD)
$变量 = <<
示例代码:
$string1=<<
有一天我心血来潮,骑着去赶集。
我手里拿着小皮鞭,我心里正得意。
不知怎么哗啦啦啦啦,我摔了一身泥.
GOD;
echo $string1;
?>
第一种: 资源resource
资源(resource):资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。我们可以对资源进行操作(创建、使用和释放)。任何资源,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽。
第二种: 空类型
NULL(NULL):NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL。
第一种: 自定义常量
什么是常量?常量可以理解为值不变的量(如圆周率);或者是常量值被定义后,在脚本的其他任何地方都不可以被改变。PHP中的常量分为自定义常量和系统常量(后续小节会详细介绍)。
自定义常量是根据我们开发的需要,而定义的常量,它通过使用PHP中的函数define()定义。(注:函数,我们可以理解为一个混凝土搅拌机,亦或是一个筛子,通过入口提供原料,然后出口产出结果,在函数中也允许入口不提供任何数据,出口也允许不返回任何值。)
define()函数的语法格式为:
bool define(string $constant_name, mixed $value[, $case_sensitive = true]) //表示对大小写不敏感(case_sensitive(敏感的意思)) 默认值是false也就是对大小写敏感.
它有3个参数(也就是原料):
第一个参数“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致,但是要注意哦,它可不带美元符号哦。第二个参数“value”为必选参数,它是常量的值。第三个参数“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false。
(注: string表示参数类型为字符串类型,mixed表示参数类型可以接受为多种不同的类型,case_sensitive = true表示默认为布尔类型TRUE)
第二种: 系统常量
系统常量是PHP已经定义好的常量,我们可以直接拿来使用,常见的系统常量有:
(1)FILE :php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。
(2)LINE :PHP程序文件行数。它可以告诉我们,当前代码在第几行。
(3)PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。
(4)PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码。
";
echo __LINE__;
echo "
";
echo PHP_VERSION;
echo "
";
echo PHP_OS;
echo "
";
?>
注意的就是: 在书写的时候需要注意的是__是两个下划线组成的,不是一个下划线组成的!
常量定义后的取值:
定义了常量,那么就要使用常量,那么如何获取常量值呢?
获取常量值的有两种方法取值。第一种是使用常量名直接获取值;例如计算圆周率的面积,如下(“*”是运算符,相当于乘号,后面部分的小节会介绍):
第二种是使用constant()函数。它和直接使用常量名输出的效果是一样的,但函数可以动态的输出不同的常量,在使用上要灵活、方便,其语法格式如下:
mixed constant(string constant_name)
第一个参数constant_name为要获取常量的名称,也可为存储常量名的变量。如果成功则返回常量的值,失败则提示错误信息常量没有被定义。(注:mixed表示函数返回值类型为多种不同的类型,string表示参数类型为字符串类型)
判断常量是不是被定义:
如果常量被重复定义以后,PHP解析器会发出“Constant XXX already defined”的警告,提醒我们该常量已经被定义过。那么,在团队开发,或代码量很大的情况下,我们如何去判定一个常量是否被定义呢?
defined()函数可以帮助我们判断一个常量是否已经定义,其语法格式为:
bool defined(string constants_name)
它只有参数constant_name,指的是要获取常量的名称,若存在则返回布尔类型true,否则返回布尔类型false; (注:bool表示函数返回值类型为布尔类型)
结果输出就是true(常量已经定义好的); false(表示没有定义过)
PHP运算符一般分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符、字符串连接运算符、错误控制运算符。
算数运算符:
PHp中的赋值运算符:
PHP的赋值运算符有两种,分别是:
(1)“=”:把右边表达式的值赋给左边的运算数。它将右边表达式值复制一份,交给左边的运算数。换而言之,首先给左边的运算数申请了一块内存,然后把复制的值放到这个内存中。
(2)“&”:引用赋值,意味着两个变量都指向同一个数据。它将使两个变量共享一块内存,如果这个内存存储的数据变了,那么两个变量的值都会发生变化。
";
echo $c."
";
?>
//解释如下: 第一点:将变量a的字符串赋值给b;
之后是变量c和变量的指向同一内存,之后d对a重新的定义,也就是a的赋值改变了,c也就是改变了!
最后输出: 我在慕课网学习php和我天天在慕课网学习php.
PHP中的比较运算符
比较运算符主要是用于进行比较运算的,例如:等于、全等、不等、大于、小于。在PHP中常用的比较运算符如下表:
我们看几比较不常见的比较运算符:
PHp中的三元表达式:
示例一看就明白了:
$b= $a>=60 ? "及格":"不及格";
PHP中的逻辑运算符
逻辑运算符主用是进行逻辑运算的,例如:逻辑与、逻辑或、逻辑异或、逻辑非等,在PHP中常用的逻辑运算符如下表:(点击看大图)
我们可以从投票的角度来理解逻辑运算:
1、逻辑与:要求所有人都投票同意,才会通过某协议;
2、逻辑或:只要求一个人投票同意就行;
3、逻辑异或:只能有且只能有一个人投票同意;
4、逻辑非:某个人要反对,但是通过逻辑非,使其反对无效;
“与”和“或”有两种不同形式运算符的原因是它们运算的优先级(就是运算的有限顺序,比如我们小学的时候学习四则运算,加减乘除混合在一起啦,优先计算乘除,再计算加减)不同。
自己的一些理解:
我大多数的语言差不多,我们可以将与(And) a a n d a and aandb和 KaTeX parse error: Expected 'EOF', got '&' at position 2: a&̲&b
";
echo ($a or $c) ?"通过":"不提供"; // 通过 (逻辑与一个true有事true)
echo "
";
echo ($a xor $c xor $d) ?"通过":"不提供"; // 通过
echo "
";
echo !$c ?"通过":"不提供"; //通过
echo "
";
echo $a && $d ?"通过":"不提供"; //不通过
echo "
";
echo $b || $c ||$d ?"通过":"不提供";
?>
PHP中的字符串连接运算符
字符串连接运算符是为了将两个字符串进行连接,PHP中提供的字符串连接运算符有:
(1)连接运算符(“.”):它返回将右参数附加到左参数后面所得的字符串。
(2)连接赋值运算符(“.=”):它将右边参数附加到左边的参数后。
可以理解为.=是对.的缩略的书写!
"; // 张先生欢迎你在慕课网学习php;
echo $b."
"; // 大便日出西边雨,道是无晴却有晴
echo $c."
"; //// 大便日出西边雨,道是无晴却有晴
?>
PHP中的错误控制运算符
PHP中提供了一个错误控制运算符“@”,对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉;
如果激活了track_error(这个玩意在php.ini中设置)特性,表达式所产生的任何错误信息都被存放在变量$php_errormsg中,此变量在每次出错时都会被覆盖,所以如果想用它的话必须尽早检查。
需要注意的是:错误控制前缀“@”不会屏蔽解析错误的信息,不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等。
顺序结构就像一条直线,按着顺序一直往下执行。我们编写的代码默认都是按照顺序结构执行的。
条件结构就像一个岔路口,可以向左走,也可以向右走。比如上洗手间,我们知道我们的性别,这时候我们需要根据洗手间提供的条件,左边男洗手间,右边女洗手间,或者正好相反,其中性别就是这个条件结构的条件。再比如,现在的分数都流行使用A、B、C来分级,假设考试成绩是93分,可以将其设置为等级A,考试成绩是87,可以将其设置为等级B,这里分数区间即为条件结构中的条件
首先判断条件,若条件的返回值为条件值一,则执行任务一,若条件返回的值为条件值二,则执行任务二,若条件的返回值既不是条件值一也不是条件值二,则执行默认任务。break的作用是结束switch(后面会有专门举例说明),使用 switch 语句可以避免冗长的 “if…else if…else”代码块。
while语句;
dowhile语句:区别是先执行一遍再去判断条件
for循环:for 语句中,“初始化”在循环开始前无条件求值一次,“循环条件”在每次循环开始前求值。如果值为 TRUE,则继续循环,执行循环体语句(执行任务)。如果值为 FALSE,则终止循环。“递增项”在每次循环之后被求值(执行)。其常用于循环执行代码块指定的次数。
foreach循环:
在PHP中foreach循环语句,常用于遍历数组,一般有两种使用方式:不取下标、取下标。
(1)只取值,不取下标
(2)同时取下标和值
foreach (数组 as 下标 => 值){
//执行的任务
}
?>
下载地址: http://www.zend.com/en/products/studio/downloads#Windows
之后就是点击下载并且安装.
xampp:
我们记录一些zend studio的快捷键.
查找: ctrl+ f 全文搜索: ctrl +h 所有快捷键: ctrl+shift+l 格式化: ctrl +shift +f 关闭: ctrl+w
提示补全: alt + / 注释: ctrl +/ 大段注释: ctrl+shift+/
FTp自动上传: propertries→ Automatic upload
插件: Emmet
PHP的数组的定义!
创建一个数组: a r r = a r r a y ( ) ; / / 表 示 创 建 一 个 空 数 组 , 并 赋 值 给 变 量 arr = array();// 表示创建一个空数组,并赋值给变量 arr=array();//表示创建一个空数组,并赋值给变量arr;
PHP中的数组有两种分别是索引数组和关联数组.
索引数组:数组的键是整数的数组,并且键的整数顺序是从0开始的,依次类推.
索引数组的三种赋值方式:
第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,索引数组中,中括号内的键一定是整数。比如,$arr[0]=‘苹果’;
需要先创建数组
第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。当然,索引数组中,键一定是整数。比如,array(‘0’=>‘苹果’);
第三种:用array()创建一个空数组,直接在数组里用英文的单引号’或者英文的双引号"赋值,数组会默认建立从0开始的整数的键。比如array(‘苹果’);这个数组相当于array(‘0’=>‘苹果’);
总结: 第一种就是一个一个赋值呗!第二种: 直接在创建数组的时候进行赋值,第三种就是,不用指明下标直接赋值,默认0开始累加.
我们就第一种写一个实例:
$arr = array();
$arr[0]="苹果";
我们来获取数组中的:
根据下表来获取.
for循环来获取
foreach来获取.
所以数组,强调的是下标识整形并且从0开始,但是关联数组指的是下标识字符串,也就是我们说的key是字符串的形式.
"苹果",
'banana'=>"香蕉",
'pineapple'=>"菠萝"); // 不同点就是小标是字符串
?>
关联数组赋值:
第一种就是: 创建空的数组,之后在通过下标来赋值:
$arr = array();
$arr['apple']="苹果";
第二种直接在括号里面执行:
$arr = array('apple'=>"苹果");
复制是如此,我们赋值之后要使用到,给怎么样使用:
获取关联数组的值:
$arr=array('apple'=>"苹果");
$arr0=$arr['apple'];// 意思就是将获取的值赋值给$arr0
使用foreach来访问关联数组的值:
"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝");
foreach($fruit as $key=>$value){
echo '
键是:'.$key.',对应的值是:'.$value;
}
?>
类的定义的 class(关键词) 表示定义的是一个类,这个类是一类事物放入集合,人,车 命名方式,驼峰式命名
class Car{
public $name=“汽车”; // 属性 public 就是修饰符类似于java中的
function getName(){ // 方法
return t h i s − > n a m e ; / / / / 方 法 内 部 可 以 使 用 this->name; ////方法内部可以使用 this−>name;////方法内部可以使用this伪变量调用对象的属性或者方法
}
}
// 类的实例化 关键字就是new 来进行实例化.
$car = new Car();
// 修改属性值
$car->name ="我修改的名字";
// 实例化后执行他的方法:
echo $car->getname();
实例化后的对象修改自己的属性和调用 实例化对象-> 属性/方法();
PHP中常见的变量的属性有 public 和受保护的protected 和 私有 private
我们说过对象访问类的属性和方法使用的操作符是-> 注意的是 这能访问的是公共的变量和方法,私有和受保护的是访问不到的,我们在内部使用伪变量 $this 使用->可以访问到!
定义方法的关键字是 function static 修饰就是静态的方法,可以直接类调用. 此时的操作符是::
PHP5可以在类中使用__construct()定义一个构造函数,具有构造函数的类,会在每次对象创建的时候调用该函数,因此常用来在对象创建的时候进行一些初始化工作。
对象在创建的时候首先是会走构造方法,c从而来完成我们的初始化工作.
构造方法也是一个构造方法,我们需要的是function关键字声明 _construct
注意: 在子类中如果定义了__construct则不会调用父类的__construct,如果需要同时调用父类的构造函数,需要使用parent::__construct()显式的调用。
继承的关键字是 extends 如果子类有一个构造方法,并且有一个自己的父类,父类中也有一个相对应的构造方法,那么这个在初始化的时候是不会去执行父类的构造方法,需要在子类的构造方法中添加
parent::_construct();
同样,PHP5支持析构函数,使用__destruct()进行定义,析构函数指的是当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数
第一: 直接使用类名::方法名()调用;
第二: 通过变量调用:
class Car {
private static $speed = 10;
public static function getSpeed() {
return self::$speed;
}
}
echo Car::getSpeed(); //调用静态方法
// 直接通过变量来调用:
$func = 'getSpeed';
$className = 'Car';
echo $className::$func(); //动态调用静态方法
// 我们梳理一下:
声明一个变量 $func 值是: getSpeed,之后是神秘一个变量 $classNme 值是: Car
eco Car::getSpeed()// 好巧秒是执行了,最后也就是类名:: 调用方法.
静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。
访问控制通过关键字public,protected和private来实现。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。
类属性必须定义为公有、受保护、私有之一。为兼容PHP5以前的版本,如果采用 var 定义,则被视为公有。
PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置(__isset)、销毁属性(__unset)
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;
正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式。其中字符串’/apple/'就是一个正则表达式,他用来匹配源字符串中是否存在apple字符串。
PHP中使用PCRE库函数进行正则匹配,比如上例中的preg_match用于执行一个正则匹配,常用来判断一类字符模式是否存在。
$p = '/apple/';
$str = "apple banna";
if (preg_match($p, $str)) {
echo 'matched';
}
PCRE库函数中,正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~),例如:
/foo bar/ // 正则表达式就是 foo bar
#^[^0-9]$# //
~php~ // php字符
如果模式中包含分隔符,则分隔符需要使用反斜杠(\)进行转义。
/http:\/\//
如果模式中包含较多的分割字符,建议更换其他的字符作为分隔符,也可以采用preg_quote进行转义。
$p = 'http://';
$p = '/'.preg_quote($p, '/').'/';
echo $p;
分隔符后面可以使用模式修饰符,模式修饰符包括:i, m, s, x等,例如使用i修饰符可以忽略大小写匹配:
$str = "Http://www.imooc.com/";
if (preg_match('/http/i', $str)) {
echo '匹配成功';
}
正则表达式中具有特殊含义的字符称之为元字符,常用的元字符有:
\ 一般用于转义字符
^ 断言目标的开始位置(或在多行模式下是行首)
$ 断言目标的结束位置(或在多行模式下是行尾)
. 匹配除换行符外的任何字符(默认)
[ 开始字符类定义
] 结束字符类定义
| 开始一个可选分支
( 子组的开始标记
) 子组的结束标记
? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)
量词,1 次或多次匹配
{ 自定义量词开始标记
} 自定义量词结束标记
//下面的\s匹配任意的空白符,包括空格,制表符,换行符。[\s]代表非空白符。[\s]+表示一次或多次匹配非空白符。
KaTeX parse error: Expected group after '^' at position 10: p = '/^我[^̲\s]+(苹果|香蕉)/’;
s t r = " 我 喜 欢 吃 苹 果 " ; i f ( p r e g m a t c h ( str = "我喜欢吃苹果"; if (preg_match( str="我喜欢吃苹果";if(pregmatch(p, $str)) {
echo ‘匹配成功’;
}
元字符具有两种使用场景,一种是可以在任何地方都能使用,另一种是只能在方括号内使用,在方括号内使用的有:
\ 转义字符
^ 仅在作为第一个字符(方括号内)时,表明字符类取反
其中^在反括号外面,表示断言目标的开始位置,但在方括号内部则代表字符类取反,方括号内的减号-可以标记字符范围,例如0-9表示0到9之间的所有数字。
//下面的\w匹配字母或数字或下划线。
$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/';
$str = "我的邮箱是[email protected]";
preg_match($p, $str, $match);
echo $match[0];