4,PHP正则基础

作者: 陈钢镚学财 | 来源:发表于2016-12-02 11:26 被阅读33次

前言


正则表达式的应用非常广泛,最常见的定义,就是一组用来描述字符串规则的特殊组合。
这个组合,描述了某种字符串拼接规则,通过语言提供的函数,去执行处理,去匹配任何符合规则的字符串。

PHP作为“世界上最好用的语言”,当然也提供了对正则的支持。

本文要点


  1. 正则语法
  • PHP对正则的支持
  • PHP的正则函数
  • 修正模式
  • 常见正则表达式

正则语法


这一知识点,比较枯燥,但掌握之后,就会对正则有一定了解
我用思维导图理了一下

正则语法.png

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地址

结语


以上内容,是个人学习时候总结的。主要以理论为主,想要掌握更深,还需动手实践。

本文出自半醒的狐狸博客

相关文章

  • 4,PHP正则基础

    前言 正则表达式的应用非常广泛,最常见的定义,就是一组用来描述字符串规则的特殊组合。这个组合,描述了某种字符串拼接...

  • 一. PHP入门篇和PHP进阶篇

    PHP基础语法 PHP数组 PHP函数 PHP之类和对象 PHP字符串 PHP之正则表达式 PHP之cookie ...

  • PHP正确匹配中文方式

    PHP正则表达式正确匹配中文方式 $str ="php编程"; if(preg_match("/^[\x{4e00...

  • 匹配中文

    javascript匹配正则中文:var reg=/[\u4e00-\u9fa5]+/gi; PHP中正则匹配中文...

  • 记录一下读的IT书

    在读 《正则表达式必知必会》 想读 《PHP精粹编写高效PHP代码》 《Android应用开发入门》 《零基础学算...

  • PHP常用正则表达式汇总

    PHP常用正则表达式汇总 正则表达式在 PHP 中的应用在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正...

  • php基础语法

    php基础教程 (PHP for the Web: Visual QuickStart Guide (4th Ed...

  • 9.2.11 编写email正则表达式

    9.2.11 编写email正则表达式 test.php ``

  • PHP 基础篇 - PHP 正则官方文档汇总

    一、PCRE 正则语法 下面是 PHP 的 PCRE 正则语法(模式语法)相关文档,详情请查阅相关链接: 简介 分...

  • php图片处理举例

    1.php压缩图片程序 单纯压缩图片 输出到浏览器 2.php成比例缩放 3.已知链接的图片抓取 4.正则抓取...

网友评论

    本文标题:4,PHP正则基础

    本文链接:https://www.haomeiwen.com/subject/pdwfmttx.html