6、正则表达式


模式修正符:i 忽略大小写 g 全局匹配


特别字符



比较重要的两个方面:


preg_replace — 执行一个正则表达式的搜索和替换,搜索subject中匹配pattern的部分, 以replacement进行替换。
preg_replace ( pattern ,replacement , $subject )

返回值:

如果subject是一个数组, preg_replace()返回一个数组, 其他情况下返回一个字符串。
如果匹配被查找到,替换后的subject被返回,其他情况下 返回没有改变的 subject。如果发生错误,返回 NULL 。

后向引用

关于php的贪婪模式详解

 .*  是贪婪模式     .*?   取消贪婪模式。
贪婪模式
用?取消贪婪

大U取消贪婪




preg_match():preg_match — 执行一个正则表达式匹配

int preg_match( string pattern, string subject [, array matches ] )
pattern:正则表达式
subject:需要匹配检索的对象
matches:可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推

preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。
preg_replace — 执行一个正则表达式的搜索和替换

preg_match() 返回 pattern 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。preg_match_all() 则相反,会一直搜索到 subject 的结尾处。如果出错 preg_match() 返回 FALSE。

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索subject中匹配pattern的部分, 以replacement进行替换。

preg_split — 通过一个正则表达式分隔字符串

array preg_split  ( string $pattern  , string $subject  [, int $limit  = -1  [, int $flags  = 0  ]] )
eg:
<?php
 //使用逗号或空格(包含" ", \r, \t, \n, \f)分隔短语
 $keywords  =  preg_split ( "/[\s,]+/" ,  "hypertext language, programming" );
 print_r ( $keywords );
 ?> 
输出:
Array
(
    [0] => hypertext
    [1] => language
    [2] => programming
)
匹配中文的实例
匹配到了中文
<?php

$str = '中文';
//匹配utf8
//$pattern = '/[\x{4e00}-\x{9fa5}]/u';
//匹配GB2312
//$pattern = '/['.chr(0xb0).'-'.chr(0xf7).']['.chr(0xa1).'-'.chr(0xfe).']/';

preg_match($pattern, $str, $match);

var_dump($match);

匹配单引号或双引号<img.*?src=["|'](.*?)["|'].*?\/?>
.*?a
就是取前面任意长度的字符,到底一个 a 出现,匹配如下
q@wer_qwerqweraljlkjlkjlkj
得到:q@wer_qwerqwera 这部分,如果匹配不到后面的 a 字符,则匹配为空。

匹配URL:

邮箱:

<?php
$str = "cheng@163.com";
$pattern = '/^\w{5,15}@[a-z0-9]+(\.[a-z]+)+$/';
preg_match($pattern,$str,$match);
print_r($match);

ip地址:

//匹配ip地址:
$str = "192.56.20.253";
$pattern = '/^([1-9]|[1-9]\d|1\d\d|2[01]\d|22[0-3])(\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])){3}$/';
preg_match($pattern,$str,$match);
print_r($match);


参考github

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 正则表达式字符类: 正则表达式重复字符语法: 正则表达式的选择、分组和引用字符: 正则表达式中的锚字符: 正则表达...
    lidroid本人阅读 3,474评论 0 1
  • 正则表达式介绍 正则表达式简介 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、...
    dptms阅读 13,727评论 1 9
  • 前言 对于正则,著称火星文字,见名知意主要它晦涩难懂,一直以来,看到它总是怕怕的,在平时,也只是简单的用用,其主要...
    itclanCoder阅读 4,212评论 0 2
  • 一、字符串操作 PHP开发中,我们遇到最多的可能就是字符串。 一个字符串 通过下面的3种方法来定义: 1、单引号 ...
    空谷悠阅读 4,365评论 1 6
  • hui娜阅读 3,106评论 1 0