4,PHP正则基础
2016-12-02 本文已影响33人
陈钢镚学财
前言
正则表达式的应用非常广泛,最常见的定义,就是一组用来描述字符串规则的特殊组合。
这个组合,描述了某种字符串拼接规则,通过语言提供的函数,去执行处理,去匹配任何符合规则的字符串。
PHP作为“世界上最好用的语言”,当然也提供了对正则的支持。
本文要点
- 正则语法
- PHP对正则的支持
- PHP的正则函数
- 修正模式
- 常见正则表达式
正则语法
这一知识点,比较枯燥,但掌握之后,就会对正则有一定了解
我用思维导图理了一下
PHP对正则的支持
PHP对正则的支持,由扩展 PCRE 来提供,PCRE兼容perl的语法。
一般情况下,PCRE在安装PHP时就默认安装好了,但也存在某些没有安装的情况,相关的安装,可以参考PHP的官方手册。直通车
PCRE还提供了一些预定义常量,这些平时不太用到,具体使用时可以参考手册
PHP的正则函数
functions.png
PHP官方手册上,提供了这些函数,这里,对比较常用的函数进行实例说明
<?php
/**
* 正则查找
*
* $pattern 正则表达式
* $subject 被查询的文本
* $matches 可省略 ,引用类型,函数内部改变,则外部也会改变 匹配的结果放到这个数组中
*
* return Int , 返回匹配的次数
*/
// preg_match($pattern, $subject,&$matches); // 最多只会返回 1
// preg_match_all($pattern, $subject, &$matches)
//
$pattern = '/[0-9]/';
$subject = 'asd54545sdfg4ras54df45rea1';
$matches = array();
echo preg_match($pattern, $subject,$matches); // 注意,这里第三个参数,在定义函数的时候,就定好&后,传值时不需要再写&
echo "<br/><hr/>";
print_r($matches);
echo "<br/><hr/>";
echo preg_match_all($pattern, $subject,$matches);
echo "<br/><hr/>";
print_r($matches);
echo "<br/><hr/>";
/**
* 正则替换
* $pattern 正则表达式
* $replacement 用于替换的文本
* $subject 被查询的文本
* 和str_replace一样,$pattern和$replacement也支持数组
* $subject 也支持数组,会一一针对这个数组的成员进行替换
*
* replace和filter的区别在于,在返回的数组中,前者会保留没有被替换的元素,而后者则只保留被替换过的元素(当subject也是数组时)
*/
$replacement = 'hellow,perl!';
echo preg_replace($pattern,$replacement,$subject);
echo "<br/><hr/>";
echo preg_filter($pattern, $replacement, $subject);
echo "<br/><hr/>";
/**
* 正则匹配
*/
$input = array('asd411','a5a5a54','jashdjh44','aaaaa');
$arr = preg_grep($pattern, $input); // 没有替换,只有匹配,将数组中匹配的值保留下来,当作返回值返回
// 此函数,可用于将数组中不符合条件的元素过滤掉
print_r($arr);
echo "<br/><hr/>";
/**
* 正则分割
*/
$arr = preg_split($pattern, $subject); // 用符合pattern规则的字符串为标志位,分割subject字符串,并返回数组
// explode(delimiter, string) 与这个函数类似
print_r($arr);
echo "<br/><hr/>";
/**
* 正则表达式运算符转义
* . \ * ? [ ^ ] $ ( ) { } = ! < > | : - 正则表达式的运算符
* 转以后,则认为是文本
*/
$str = preg_quote($pattern);
print_r($str);
echo "<br/><hr/>";
/**
* 总结
* 1,preg开头
* 2,主要使用场景
* preg_match系列 验证等场景
* preg_replace系列 非法词语过滤等场景
*/
?>
修正模式
修正模式实际上就是对当前正则表达式的一种设定,如告诉处理器,你以xxx规则来解析这个表达式
通常,结束符后的那一位指定,被称之为 修修正符
修正模式.png
常见正则表达式
日常应用中,最常见的表单验证就频繁使用了正则表达式
下面列举几个常用的:
/.+/ -- 非空
/^[^0]\d+\.\d{2}$/ -- 两位小数的浮点数
/^1[34578]\d11$/ -- 大陆手机号验证
/^\w+(\.(\w|.)+)*@\w+(\.\w+)+$/ --Email地址
/^((http://)|(https://))?(\w+\.)+[a-zA-Z]+/?.+$/ -- URL地址
结语
以上内容,是个人学习时候总结的。主要以理论为主,想要掌握更深,还需动手实践。