为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
PHP进阶篇_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

PHP进阶篇

Jason PHP开发工程师
难度初级
时长 9小时28分
  • 贪婪模式与懒惰模式 正则表达式中每个元字符匹配一个字符,当使用+之后将会变的贪婪,它将匹配尽可能多的字符,但使用问号?字符时,它将尽可能少的匹配字符,既是懒惰模式。 贪婪模式:在可匹配与可不匹配的时候,优先匹配 //下面的\d表示匹配数字 $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-12345678 <?php //请修改变量p的正则表达式,使他能够匹配str中的姓名 $p = '/name:([\w\s]+)/'; $str = "name:steven jobs"; preg_match($p, $str, $match); echo $match[1]; //结果为:steven jobs //贪婪模式 echo '<br/>'.'<br/>'; $p = '/\d+\-\d+/'; $str = "我的电话是010-12345678"; preg_match($p, $str, $match); echo $match[0]; //结果为:010-12345678 //懒惰模式 echo '<br/>'.'<br/>'; $p = '/\d?\-\d?/'; $str = "我的电话是010-12345678"; preg_match($p, $str, $match); echo $match[0]; //结果为:0-1 ?>
    查看全部
  • <?php //请修改变量p的正则表达式,使他能够匹配str中的电话 $p = '/\d+\-\d+/'; $str = "我的电话是010-12345678"; preg_match($p, $str, $match); echo $match[0]; echo '<br/>'.'<br/>'; //下面的\s匹配任意的空白符,包括空格,制表符,换行符。[^\s]代表非空白符。[^\s]+表示一次或多次匹配非空白符。 $p = '/^我[^\s]+(苹果|香蕉)$/'; $str = "我喜欢吃苹果"; if (preg_match($p, $str)) { echo '匹配成功'; } ?>
    查看全部
    0 采集 收起 来源:元字符与转义

    2018-03-22

  • 元字符与转义 正则表达式中具有特殊含义的字符称之为元字符,常用的元字符有: \ 一般用于转义字符 ^ 断言目标的开始位置(或在多行模式下是行首) $ 断言目标的结束位置(或在多行模式下是行尾) . 匹配除换行符外的任何字符(默认) [ 开始字符类定义 ] 结束字符类定义 | 开始一个可选分支 ( 子组的开始标记 ) 子组的结束标记 ? 作为量词,表示 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];
    查看全部
    0 采集 收起 来源:元字符与转义

    2018-03-22

  • 正则表达式的基本语法 PCRE库函数中,正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~),例如: /foo bar/ #^[^0-9]$# ~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 '匹配成功'; } <?php //请修改变量p的正则表达式,使他能够匹配BBC $p = '/bbc/i'; $str = "BBC是英国的一个电视台"; if (preg_match($p, $str)) { echo '匹配成功'; echo '<br/>'; $a='/http/i'; $b="Http://www.imooc.com/"; if(preg_match($a,$b)){ echo '匹配成功'; } } ?>
    查看全部
  • 什么叫正则表达式 正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式。 $p = '/apple/'; $str = "apple banna"; if (preg_match($p, $str)) { echo 'matched'; } 其中字符串'/apple/'就是一个正则表达式,他用来匹配源字符串中是否存在apple字符串。 PHP中使用PCRE库函数进行正则匹配,比如上例中的preg_match用于执行一个正则匹配,常用来判断一类字符模式是否存在。 <?php //请修改变量p的正则表达式,使他能够匹配苹果 $p = '/苹果/'; $str = "我喜欢吃苹果"; if (preg_match($p, $str)) { echo '匹配成功'; } echo '<br/>'; $s='/like/'; $str="I like you"; if(preg_match($s,$str)){ echo '匹配成功'; } ?>
    查看全部
  • <?php header('Content-type:text/html; charset=utf-8'); $str = 'imooc年度TOP10视频'; preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $str, $matches); var_dump($matches); 以上为匹配UTF-8中文字符,输出结果: 1 array(1) { [0]=> array(2) { [0]=> string(6) "年度" [1]=> string(6) "视频" }}
    查看全部
  • 通过复杂的模式,我们可以更加精确的替换目标字符串的内容。 $patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/', '/^\s*{(\w+)}\s*=/'); $replace = array ('\3/\4/\1\2', '$\1 =');//\3等效于$3,\4等效于$4,依次类推 echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27'); //结果为:$startDate = 5/27/1999 //详细解释下结果:(19|20)表示取19或者20中任意一个数字,(\d{2})表示两个数字,(\d{1,2})表示1个或2个数字,(\d{1,2})表示1个或2个数字。^\s*{(\w+)\s*=}表示以任意空格开头的,并且包含在{}中的字符,并且以任意空格结尾的,最后有个=号的。
    查看全部
  • PHP中定义一个字符串变量时用双引号或单引号之间的区别? 单引号:里面的内容将被认为是普通字符 双引号:里面的内容允许存在字符变量 $hello = "world"; echo 'hello $hello';//输出hello $hello; echo "hello $hello";//输出hello world;
    查看全部
    0 采集 收起

    2018-03-22

  • $p = "/<li>(.*)<\/li>/i";//解释下这个正则://后面的i表示不区分大小写,<li>(.*?)<\/li>表示li标签内的匹配的()内的值有多少,括号内的.表示所有单字符,*表示数量为0个或者多个。也就是li标签内有字符就显示出来 preg_match_all($p, $str, $matches); print_r($matches[1]);
    查看全部
  • 括号是代表子组,$p = '/\w+\s\w+/';也可以通过,但是要把$match[1]改成$match[0],因为不加括号时匹配的字符串不在子组中,即不在$match[1]中,而只存在于$match[0]中(不对勿喷)
    查看全部
  • $match[0]代表模式匹配到的完整文本。$match[1]代表第一个捕获子组匹配到的文本。注:捕获子组就是你用()括起来的部分。如果不加括号,你用$match[0]会显示正常。
    查看全部
  • 这个例子中`\d+?` 是比较容易范迷糊的。后面的那组`\d+?`你已经知道原因了。 我说一下前面的那组`\d+?` 当正则开始匹配的时候,`\d+?`会最先匹配`我`,发现不对,继续匹配,直到匹配到字符串中的第一个0,发现对了。但这时候重点来了,如果0后面匹配到杠(-)以后,才满足`\d+?\-` 这一段。但是0后面不是-,而是1.所以会重新匹配01,然后依然是上面那样。直到匹配到010-的时候发现满足`\d+?\-` ,那么它会继续匹配剩下的正则表达式部分。后面的你也知道了。 这里关键点是那个杠(-)因为你只有匹配到杠(-)的时候才满足`\d+?\-`这段,即匹配结果是010-
    查看全部
  • \ 一般用于转义字符 ^ 断言目标的开始位置(或在多行模式下是行首) $ 断言目标的结束位置(或在多行模式下是行尾) . 匹配除换行符外的任何字符(默认) [ 开始字符类定义 ] 结束字符类定义 | 开始一个可选分支 ( 子组的开始标记 ) 子组的结束标记 ? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词) * 量词,0 次或多次匹配 + 量词,1 次或多次匹配 { 自定义量词开始标记 } 自定义量词结束标记
    查看全部
    0 采集 收起 来源:元字符与转义

    2015-06-29

  • 单引号和双引号的区别 在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" "。 但是必须使用同一种单或双引号来定义字符串,如:'Hello World"和"Hello World'为非法的字符串定义。 单引号和双引号到底有啥区别呢? PHP允许我们在双引号串中直接包含字串变量。 而单引号串中的内容总被认为是普通字符。 比如: $str='hello'; echo "str is $str"; //运行结果: str is hello echo 'str is $str'; //运行结果: str is $str <?php //用单引号定义一个字符串,字符串里输入字符hello world,并把字符串都赋值给变量$str $str='hello world'; echo 'str is $str'; echo "<br/>"; //用双引号定义一个字符串,字符串里输入字符hello world,并把字符串都赋值给变量$str $str="hello world"; echo "str is $str"; ?>
    查看全部
    0 采集 收起

    2018-03-22

  • <?php 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; if ($a == $b) echo '=='; //true if ($a === $b) echo '==='; //false $str = serialize($a); //对象序列化成字符串 echo $str.'<br>'; $c = unserialize($str); //反序列化为对象 var_dump($c);
    查看全部

举报

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

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