本文实例讲述了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/"; //规则模式
//表示到达了单词的边界,如果没有到达就不匹配,边界可以理解为空格
//$mode = "/php/"; //规则模式
//B 表示没有到达边界
//$mode = "/phpB/"; //规则模式
//因为 + 号是正则里的特殊字符
//如果要匹配特殊字符的话,必须加上
$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
,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 )
?>
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php正则表达式用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。