为了账号安全,请及时绑定邮箱和手机立即绑定

PHP进阶篇

Jason PHP开发工程师
难度初级
时长 9小时28分
学习人数
综合评分8.90
570人评价 查看评价
9.3 内容实用
8.8 简洁易懂
8.6 逻辑清晰
  • 元字符与转义 正则表达式中具有特殊含义的字符称之为元字符,常用的元字符有: \ 一般用于转义字符 ^ 断言目标的开始位置(或在多行模式下是行首) $ 断言目标的结束位置(或在多行模式下是行尾) . 匹配除换行符外的任何字符(默认) [ 开始字符类定义 ] 结束字符类定义 | 开始一个可选分支 ( 子组的开始标记 ) 子组的结束标记 ? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词) * 量词,0 次或多次匹配 + 量词,1 次或多次匹配 { 自定义量词开始标记 } 自定义量词结束标记 //下面的\s匹配任意的空白符,包括空格,制表符,换行符。[^\s]代表非空白符。[^\s]+表示一次或多次匹配非空白符。 $p = '/^我[^\s]+(苹果|香蕉)$/'; $str = "我喜欢吃苹果"; if (preg_match($p, $str)) { echo '匹配成功'; } 元字符具有两种使用场景,一种是可以在任何地方都能使用,另一种是只能在方括号内使用,在方括号内使用的有: \ 转义字符 ^ 仅在作为第一个字符(方括号内)时,表明字符类取反 - 标记字符范围 其中^在反括号外面,表示断言目标的开始位置,但在方括号内部则代表字符类取反,方括号内的减号-可以标记字符范围,例如0-9表示0到9之间的所有数字。 //下面的\w匹配字母或数字或下划线。 $p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/'; $str = "我的邮箱是Spark.eric@imooc.com"; preg_match($p, $str, $match); echo $match[0]; 任务 请编写一个模式,用户匹配目标字符串中的电话号码。(提示:\d匹配数字) ?不会了怎么办 将变量$p的表达式修改为: $p = '/\d+\-\d+/';
    查看全部
    2 采集 收起 来源:元字符与转义

    2018-03-22

  • //这里是为了说明本节中关于懒惰模式的例子是错误的 $p = '/\d?\-\d?/'; $str = "我的电话是910-92345678"; //我把电话号码里的第一个0改为了9,这样更能看清匹配出的是哪个数字 preg_match($p, $str, $match); echo $match[0]; //结果为:0-9 /*匹配过程:- 把字符串分为910和92345678两部分,910从最后一个0开始,0匹配\d?(出现1次数字),而且后面紧跟 - ,符合,结束(或者理解为先从9开始,后面-不匹配,接着1,同样不匹配,到0匹配,这里匹配包括了后面的-,后面92345678同样道理);92345678 也从最后一个8开始, 虽然匹配\d?, 但是前面不是-, 回退 一个数字到7, 同样不符合,直到9才符合,结束。注意:\d?每次只吞掉一个字符,因为?代表0或者1次,而*和+号要吞掉整个字符串。所以这里关于懒惰模式的例子是错误的。结果里的0-1,0根本就不是第一个0,而是第三个,这根本就不叫懒惰模式,如果是懒惰模式,应该匹配出的是第一个0 。*/
    查看全部
  • good
    查看全部
    2 采集 收起

    2015-01-29

  • 使用关键字static修饰的,称之为静态方法,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::。 class Car { public static function getName() { return '汽车'; } ​} echo Car::getName(); //结果为“汽车”
    查看全部
  • 这里的重载不是c++或者java意义上的重载,而是php的一个默认函数__call($name,$args),当你要调用的函数不存在时,函数名(speedDown)传给形参$name,里面的参数传给形参$args,然而内部具体执行需要自己编写。
    查看全部
  • 第一种:$array['key']此单引号键值模式可以直接被解析为一个数组即$array 第二种:$array["key"]此双引号键值模式,先执行的是"key",判断是否有定义的PHP变量存在,在解析为数组即$array 第三种:$array[key]此为无单双引号键值模式,会先分析局部作用于是否有key键值定义的常量存在,即使用define('key','val'),然后解析数组即$array
    查看全部
  • PHP有两种数组:索引数组、关联数组。 索引和关联两个词都是针对数组的键而言的。 先介绍下索引数组,索引数组是指数组的键是整数的数组,并且键的整数顺序是从0开始,依次类推。 索引数组赋值有三种方式: 第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,索引数组中,中括号内的键一定是整数。比如,$arr[0]='苹果'; 第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。当然,索引数组中,键一定是整数。比如,array('0'=>'苹果'); 第三种:用array()创建一个空数组,直接在数组里用英文的单引号'或者英文的双引号"赋值,数组会默认建立从0开始的整数的键。比如array('苹果'); 关联数组是指数组的键是字符串的数组。 关联数组赋值有两种方式: 第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,关联数组中,中括号内的键一定是字符串。比如,$arr['apple']='苹果'; 第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。当然,关联数组中,键一定是字符串。比如,array('apple'=>'苹果');
    查看全部
  • php 中的 heredoc技术是php用来引用字符串的一种方式。在phpwind中巧妙的运用了这个技术,实现了逻辑代码和界面设计的分离。 语法:   1. 使用操作符  “<<<” 2. 操作符后紧跟标识符(开始标识符),之后重起新的一行 输入要引用的字符串,可以包含变量。 3. 新的一行,顶格写结束表示符,以分号结束。 要注意到几点:   1.标识符可以自定义 一般的 有EOT ,EOD  EOF 等, 只有保持开始表示符和结束表示符一样即可。 2.结束表示符必须独占一行,且必须顶格写,最后以 ‘;’ 分号结尾。 3.所有引用的字符串中可以包含变量,无需字符串连接符。 <?php $str = <<<ET heredoc test!!!   ET; echo $str; ?>   输出结果  heredoc test!!!
    查看全部
    2 采集 收起

    2018-03-22

  • $car = new car()实例化对象要注意有个new。 在定义一个类时,因为没有对类实例化(对象),因而也无法得知对象的具体名称是什么。这时,如果想调用类中的成员方法或成员变量,就只能通过伪变量$this调用,$this顾名思义就是指类本身,需要注意的一点是$this 只能在类内部使用,否则将出错。 嘛,其实要是学过了C#或者其他的机器语言的话对类和对象的理解还是挺容易的,虽然这些机器语言在运用方面差异很大,但是在基本概念方面赶脚都是大同小异的。
    查看全部
    2 采集 收起 来源:PHP类和对象

    2015-01-22

  • 看到正则表达式感觉已经爆炸了
    查看全部
  • 文件是否存在: file_exists($fname); 是不是文件:is_file($fname); 是否可读、写: file_readable($filename); file_writeable($filename); 读取所有文件内容: file_get_contents($fname); 打开文件: fopen($fname); 关闭文件: fclose($fname); 下一行是否有内容:feof($opendfile); 读取一行内容: fgets($openfile);
    查看全部
  • 文档上的解释为:如果提供了参数 matches ,它将被填充为搜索结果。 $matches[0] 将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。 文档上对于子组的说明为:子组通过圆括号分隔界定,并且它们可以嵌套。 如果正则表达式写为$p = '/\w+\s\w+/';,则没有子组,$matches[1]为空,而$matches[0]包含所匹配的文本;但是将表达式加上括号写为$p = '/(\w+\s\w+)/';,则有了子组,此时$matches[1]与$matches[0]相同。
    查看全部
  • 访问控制 访问控制通过关键字public,protected和private来实现。 被定义为公有的类成员 可以在任何地方被访问。 被定义为受保护的类成员 则可以被其自身以及其子类和父类访问。 被定义为私有的类成员 则只能被其定义所在的类访问。 类属性必须定义为公有、受保护、私有之一。 注:为兼容PHP5以前的版本,如果采用 var 定义,则被视为公有。 class Car { $speed = 10; //错误 属性必须定义访问控制 public $name; //定义共有属性 } 类中的方法可以被定义为公有、私有或受保护。 注:如果没有设置这些关键字,则该方法默认为公有。 如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。 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(); //通过静态方法来获得一个实例
    查看全部
  • 可以运行的,只是error.log文件是只读文件,不能写入$msg。 代码运行结果如下: Error:wrong #0 {main} 异常行号:3 所在文件:/26/603/CbaO/index.php Warning: file_put_contents(error.log): failed to open stream: Read-only file system in /26/603/CbaO/index.php on line 11
    查看全部
  • 我想知道这个 $args 代码是从哪里冒出来的 有什么意思吗? public function __call($name, $args) { if ($name == 'speedDown') { $this->speed -= 10; } } 2015-05-19 源自:PHP进阶篇 3-9 417 浏览 1 回答 最佳回答 2015-05-19 1,当我们试图调用类中一个不可见或者未定义方法的时候,类中定义好的__call这个魔术方法就会去监听这个动作。 并且会自动将我们试图调用的方法名放入到__call方法的第一个参数中,将方法里面的实际参数放到__call方法的第二个参数中(如果没有传递任何参数,那么第二个参数就是一个空数组)。 2,__call里面的参数是形式参数,参数名可以自定义。
    查看全部

举报

0/150
提交
取消
课程须知
需要有一定的网页基础知识如HTML、CSS样式等,并且已经学习完成《PHP入门篇》对PHP已经有了简单的了解,如变量、常量、数据类型等。
老师告诉你能学到什么?
全面的掌握PHP的理论知识与实践中的应用方法,提高编程能力与掌握网页开发技能。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!