PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
更新时间:2016年9月18日 10:11 点击:1473
本文实例讲述了PHP正则表达式基本用法。分享给大家供大家参考,具体如下:
Demo1.php
<?php //尝试着写第一个正则表达式 //第一个参数,表示模式(就是和字符串去比较,匹配) //第二个参数,表示字符串 //如果整个函数模式和字符串比较后匹配了,那么返回真(true)1,否则返回假(false)0 //什么叫匹配,就是一个一个的比较过去 //按照什么规则??按照模式来匹配 //只要模式全部通过,那么就通过 //匹配和相等是两个概念 //因为目前的模式是一个整体,php //所以,字符串只要有连在一起的 php 三个字符,不管怎样的字符串都能匹配 $mode = '/php/'; //规则模式 $string = 'fsdfsdfsdphpfsdfs'; //字符串 //echo preg_match($mode,$string); if( preg_match($mode,$string)){ echo '匹配'; }else{ echo '不匹配'; } //echo preg_match('/php/','php'); // if('a'=='a'){ // echo '相等'; // }else { // echo '不相等'; // } ?>
Demo2.php
<?php //什么叫前导,前面的一个字符 //+ 号的前导字符就是 h //h+ 的意思是,至少包含一个 h //+ 号的意思 //$mode = '/ph+p/'; //规则模式 //h* 的意思是,零个或者多个 h //* 号虽然可以是零个,但是前导字符不能更改,更改了,就不匹配了 //$mode = '/ph*p/'; //规则模式 //h? 的意思是,零个或者一个 h //? 多个前导字符不行 //$mode = '/ph?p/'; //规则模式 //.的意思是,任意一个字符,所以,两个点,就是任意两个字符 //$mode = '/p.p/'; //规则模式 //.* 表示前导任意字符,并且零个或者多个 //$mode = '/p.*p/'; //规则模式 //h{3} 表示,前导必须是3 个, //$mode = '/ph{3}p/'; //规则模式 //h{3,5}表示,前导必须是 3 到 5 个 //$mode = '/ph{3,5}p/'; //规则模式 //h{3,} 表示,前导至少 3 个 h //$mode = '/ph{3,}p/'; //规则模式 //$符号,一般加在模式的字符串尾巴上 //表示从尾巴开始匹配 //$mode = '/php$/'; //规则模式 //^表示,从开头进行匹配 //$mode = '/^php/'; //规则模式 //^ 和 $ 一起用的,基本上不要用正则了,直接用 == 号即可 //$mode = '/^php$/'; //规则模式 //| 是一个条件选择符,如果有其中一个,即可匹配。 //$mode = '/php|asp/'; //规则模式 //() $mode = '/(this) (is) (php|asp)/'; //规则模式 $string = 'this is php'; //字符串 //echo preg_match($mode,$string); if( preg_match($mode,$string)){ echo '匹配'; }else{ echo '不匹配'; } ?>
Demo3.php
<?php //元子符 //[]中括号,是一种正则里的语法 //里面的东西表示任意一个即可 //[a-z] 表示 26 个字母中,随便其中一个 //$mode = '/[a-z]/'; //规则模式 //[0-9] 表示 0-9,随便其中一个 //$mode = '/[0-9]/'; //规则模式 //[asv] 其中一个 //$mode = '/[asv]/'; //规则模式 //[a-zA-Z0-9_] 表示其中一个匹配 [a-zA-Z0-9_] 中的任意一个 //$mode = '/[a-zA-Z0-9_]/'; //规则模式 //不是在开头匹配行首的^,而是中括号里的 ^ //[^] 表示匹配除了abc 外都能匹配的字符串 //$mode = '/[^abc]/'; //规则模式 //为了让人们使用更加的方便,\w 代表 [a-zA-Z0-9_] //$mode = '/[\w]/'; //规则模式 //\W 正好和 \w相反 //$mode = '/[\W]/'; //规则模式 //\d 和 [0-9] 一样 //$mode = '/\d/'; //规则模式 //\D 和 [^0-9] 一样 //$mode = '/\D/'; //规则模式 //\s匹配任何空白字符 //$mode = '/\s/'; //规则模式 //\S不包含空白字符 //$mode = '/\S/'; //规则模式 //\b表示到达了单词的边界,如果没有到达就不匹配,边界可以理解为空格 //$mode = '/php\b/'; //规则模式 //\B 表示没有到达边界 //$mode = '/php\B/'; //规则模式 //因为 + 号是正则里的特殊字符 //如果要匹配特殊字符的话,必须加上 \ $mode = '/p\+p/'; //规则模式 $string = 'p+p'; //字符串 if( preg_match($mode,$string)){ echo '匹配'; }else{ echo '不匹配'; } ?>
Demo4.php
<?php //修饰符 //修饰符放在 // 的外面 //i 表示不区分大小写 // $mode = '/php/i'; //规则模式 // $string = 'PHP'; //字符串 //m 表示匹配首尾的时候,如果遇到换行,也应该承认是结尾 // $mode = '/php$/m'; //规则模式 // $string = "this is a php\n ,is goods"; //字符串 //x 表示忽略掉规则模式中的空白字符 // $mode = '/php/x'; //规则模式 // $string = 'ph p'; //字符串 //A 表示必须从头开始匹配 $mode = '/php/A'; //规则模式 $string = 'phpfsdfd'; //字符串 if( preg_match($mode,$string)){ echo '匹配'; }else{ echo '不匹配'; } ?>
Demo5.php
<?php //搜索数组中的相匹配的字符串 //preg_grep() 函数 $language = array('php','asp','jsp','python','ruby'); //找出最流行的 3p 语言 //这三门语言的匹配共同点是什么,最后结尾都是 p //结尾匹配 p /p$/ //$mode = '/p$/'; //打印出开头为 p 的语言 $mode = '/^p/'; //python 蟒蛇语言,在国外有取代 PHP 的传闻 print_r(preg_grep($mode,$language)); ?>
Demo6.php
<?php //搜索模式,最后返回的是真或者是假,1,10 echo preg_match('/php[1-6]/','php5'); ?>
Demo7.php
<?php //电子邮件的小案例 //通过拆分的方法分组 $mode = '/^([\w\.]{2,255})@([\w\-]{1,255}).([a-z]{2,4})$/';//模式不能缺少 $string = 'oneStopWeb@163.com'; if(preg_match($mode,$string)){ echo '电子邮件合法'; }else{ echo '电子邮件不合法'; } ?>
Demo8.php
<?php //匹配全局正则 //将字符串的所有匹配得到的结果放到一个数组变量里 preg_match_all('/php[1-5]/','php5fsdfsdphp6fsdfsdfphp4',$out); print_r($out);//Array ( [0] => Array ( [0] => php5 [1] => php4 ) ) echo $out[0][0];//php5 ?>
Demo9.php
<?php //定界定则 echo preg_quote('PHP is $150'); //PHP is \$150 ?>
Demo10.php
<?php //搜索匹配的结果,然后替换掉 //第一个参数,存的是正则模式 //第二参数,放的是替换掉的字符串 //第二个参数,字符 //将第三个参数的字符串的 php5,php6 替换成了 oneStopWeb echo preg_replace('/php[1-6]/','oneStopWeb','This is a php5,This is a php6'); //This is a oneStopWeb,This is a oneStopWeb ?>
Demo11.php
<?php //贪婪和分组获取的案例,ubb //我要将这个 [b][/b] 换成 <strong></strong> //注意一个问题,这个时候的 [] 中括号,是字符串的括号,而不是语法[a-z] //. 表示匹配任意字符一个,加上一个 * 号表示匹配零个或者多个 //用括号分为三组,那么第一组就是\1,第二组就是\2,第三组就是\3 //目前只有1 组,\1 //第一问题,第一个[b]和最后一个[/b]匹配了 //解决贪婪匹配。 $mode = '/(\[b\])(.*)(\[\/b\])/U';//U 禁止贪婪 $replace = '<strong>\2</strong>'; $string = 'This is a [b]php5[/b],This is a [b]php6 [/b]'; //echo $string; echo preg_replace($mode,$replace,$string); ?>
Demo12.php
<?php //用正则表达来进行分割 //如果没有 [] 符号,就表示,要同时满足 print_r(preg_split('/[.@]/','oneStopWeb@163.com')); //Array ( [0] => oneStopWeb [1] => 163 [2] => com ) ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php正则表达式用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
相关文章
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
- index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04- 这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
- 这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
- 这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
- 本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
- 这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31- 这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
- 今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
这篇文章主要介绍了JS常见简单正则表达式验证功能,结合实例形式总结分析了JS针对手机,地址,企业税号,金额,身份证等的常见验证技巧,需要的朋友可以参考下...2017-01-26- 经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24
- 这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
- 这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11
- 这篇文章主要介绍了jQuery+PHP+MySQL实现无限级联效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-02-21
- 这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12
- 这篇文章主要为大家详细介绍了php构造方法中析构方法在继承中的表现,感兴趣的小伙伴们可以参考一下...2016-04-15
- 这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06