CY-Left

PHP开发语言

php 正则表达式语法简明笔记

php 正则表达式语法

以匹配电话号码为例介绍 5 种 php 匹配方法
1. preg_match()
* 注释:
* preg_match(string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
* pattern 模式串
* subject 工程文件
* matches 匹配结果(二维数组)
* offset 指定开始检索位置
* 特点:
* 1. 只执行一次,得到结果或者文本访问结束便立刻结束

  1. preg_match_all()
    • 注释
    • preg_match_all(string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
    • pattern 模式串
    • subject 工程文件
    • matches 匹配结果(二维数组)
    • offset 指定开始检索位置
  • 特点:
    1. 全文中执行多次,直到全文检索完毕结束
  1. preg_grep()
    • 注释
    • array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )
    • pattern 模式串
    • input 输入二维数组
    • 特点:
      1. 检索并返回 input 数组中能被 pattern 匹配到的项
      1. 仅匹配,不替换
  2. preg_filter();

  • mixed preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
  • pattern 模式串
  • replacement 替换字符
  • subject 工程文件

  • 特点:

    1. 检索并替换
  1. preg_split();
    • 注释:
    • array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
    • limit 设定最大分割多少分
  • 特点
    1. 以模式串 pattern 为标志分割 subject 字符串
    1. 返回 subject 所分割的二维数组
  1. preg_quote()
    • 注释:
    • string preg_quote ( string $str [, string $delimiter = NULL ] )
    • str 输入字符
    • delimiter 指定额外的被转移字符
  • 功能:
    1. 将 str 中的特殊字符添加 ‘\’ 前缀
    1. 额外指定的 delimiter 字符也会添加前缀
    1. 注意 / 不是正则表达式特殊字符。
    1. 字符 – 被增加为需要转义的(5.3.0 之后)
<?php
// 这里,我们匹配带分隔符 - 的电话。
$str = '123-1234-1231---123-1234-1231---123-1234-1231';

$match = array();

# 1. 末尾的 i 表示忽略大小写,还有一个我们经常用到的是"x"表示忽略空格。
# 2. 前后 / 表示定界符,用 # 亦可
$preg1 = '/[1-9][1-9][1-9] - [1-9][1-9][1-9][1-9] - [1-9][1-9][1-9][1-9]/x';

// --------第一种方法---------
# 获取第一个电话
preg_match($preg1, $str, $match);
show($match[0]);


// --------第二种方法---------
# 获取所有合格电话
preg_match_all($preg1, $str, $match);
show($match[0]);

// --------第三种方法------------

show(preg_grep($preg1, ["123-1234-1231","123-1234-1231sfd","asdlkfj"]));

// --------第四种方法------------
show(preg_filter($preg1, "电话", ["123-1234-1231","123-1234-1231sfd","asdlkfj"]));

// --------第五种方法------------
show(preg_split($preg1, $str, 2));

// --------第六种方法---------
show(preg_quote($str, ''));


function show($var){
    if(empty($var)){
        echo 'null';
    }elseif(is_array($var)||is_object($var)){
        // array,object
        echo '<pre>';
        print_r($var);
        echo '</pre>';
    }else{
        //string,int,float
        echo $var;
    }
}

居高声自远,非是藉秋风。

本文虽拙,却也系作者劳动,转载还请保留本文链接: http://cyleft.com/?p=666