codetc - 网站开发技术 首页 后端 PHP 查看内容

php正则表达式以及正则函数的使用

2015-1-13 00:30| 发布者: CODETC| 查看: 2002| 评论: 0

随着正则表达式变得越来越强大和易于使用,php正则表达式也成为了一个非常重要的知识点,正则表达式通常用来查找和替换字符串,最常用的就是信息验证,验证用户输入的信息格式是否正确,如邮件格式、电话格式、密码或用户名格式和长度等等。还有比如采集器之类的软件程序中,正则也是必用不可!


正则表达式相对于程序语言来说更难学,而且难记,不过学习一些基本语法和使用方法还是不太难的。


1.“/”是定界符,“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。同时为了正则更加灵活,引入了元字符,即“+”, “*”,以及 “?”。
(1)“+”元字符匹配前面的子表达式一次或多次(大于等于1次)
比如:/codetc+/,能够与“codetcc”匹配,即字母tc后面连续出现一个或多个字母c的字符串相匹配。
(2)“*”元字符匹配前面的子表达式零次或多次(大于等于0次)
比如:/codetc*/能够与“codetc.com”相匹配
(3)“?”元字符匹配前面的子表达式零次或一次
比如:/codetc?/能够“codetcer”匹配,即tc后面可以有0个或者1个c


其他重要的元字符:
\s:用于匹配单个空格符,包括tab键和换行符;
\S:用于匹配除单个空格符之外的所有字符;
\d:用于匹配从0到9的数字;
\w:用于匹配字母,数字或下划线字符;
\W:用于匹配所有与\w不匹配的字符;
. :用于匹配除换行符之外的所有字符。
示例:/\s+/用于匹配目标对象中的一个或多个空格字符


2.定位符用于规定匹配模式在目标对象中的出现位置。常用的有“^”, “$”, “\b” 以及 “\B”
(1)“^”定位符规定匹配模式必须出现在目标字符串的开头
(2)“$”定位符规定匹配模式必须出现在目标对象的结尾
(3)“\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一
(4)“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内


3.php的正则匹配模式非常灵活,可以指定某一范围
例如:
/[A-Z]/
上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。
/[a-z]/
上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。
/[0-9]/
上述正则表达式将会与从0到9范围内任何一个数字相匹配。
/([a-z][A-Z][0-9])+/
上述正则表达式将会与任何由字母和数字组成的字符串


4.可以同时与多种模式选择匹配
x|y:匹配x或y
如/codetc.com|codetc|100/可以与“codetc.com” “codetc” “100”相匹配


5.否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串
例如:[^codetc]匹配除了codetc字符外的所有东西


上面我们主要讲述了常用的一些语法知识,正则表达式除了难在难记之外,而且还难在运用上,下面来讲讲正则表达式在PHP中的常用函数。

<?php
//preg_match("正则表达式","字符串")用于在字符串中查找匹配项
$email = "test01_match@codetc.com";
if (preg_match("/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([.a-zA-Z0-9_-])+([.a-zA-Z0-9_-]+)+([.a-zA-Z0-9_-])$/",$email)){
	echo '匹配成功<hr />';
}else {
	echo '匹配失败<hr />';
}

//preg_quote("字符串") 在每个有正则表达式语法前面加入一个转义字符即\
$str = "codetc是一个讲述使用PHP开发网站知识的网站";
echo preg_quote($str);
echo "<hr />";
 
//preg_split("正则","字符串")分割字符串
$php = "+codetc++php网站++++开发技术";
$field = preg_split("/\+{1,}/",$php);
foreach($field as $f){
	echo $f." ";
}
echo "<hr />";

//preg_grep("正则","字符串") 与数组匹配后返回新数组
$arr = array("codetc","php网站开发","呵呵","hahaha","测试");
$item = preg_grep("/^php/",$arr);
print_r($item);
echo "<hr />";

//preg_replace("正则","替换内容","原字符串") 很重要,很常用
$a = "欢迎光临http://www.codetc.com/";  //给http开头的加上超链接
echo preg_replace("/http:\/\/(.*)\//","<a href=\"\${0}\">\${0}</a>","$a");
?>

上面程序运行的结果如下:

文章来源 CODETC,欢迎分享,转载请注明地址: http://www.codetc.com/article-119-1.html

最新评论

 作为游客发表评论,请输入您的昵称

返回顶部