美文网首页
PHP正则表达式

PHP正则表达式

作者: 陈智涛 | 来源:发表于2017-10-24 22:31 被阅读0次

1、正则表达式的作用

匹配,分割,查找,替换字符串

2、正则表达式分隔符:

正斜线(/),hash符号(#),取反符号(~ )

3、通用原子:

\d(十进制0-9)
\D(\d的取反)
\w(数字,字母,下划线)
\W(\w取反)
\s(空白符)
\S(\s取反)

4、元字符

. (除了换行符以外的任意字符)

* (匹配前面的内容和,出现0次1次或者多次)
? (出现0次或者1次)
^(以它开头)
$(以它结尾)
+(出现一次或者多次)
{n}恰巧出现n次
{n,}出现大于等于n次
{n,m} n<=次数<=m
[](一个集合如[abc]就是匹配a或b或c)
()(互相引用,或者代表一个整体)
[^](取反如[^abc]除了a,b,c)
|(或者)
[-](范围[0-9]代表匹配0-9)

5、修正模式

i 不区分大小写
m 将字符串的每一行分别进行匹配
e 对匹配的结果做PHP语法处理
s 将字符串视为单行,换行符作为普通字符.
U 取消贪婪模式
x 将模式中的空白忽略.
A 强制仅从目标字符串的开头开始匹配.
D 模式中的美元元字符仅匹配目标字符串的结尾.
u utf-8中文匹配

6、后向引用

示例:匹配<b></b>中的内容


屏幕快照 2017-10-24 下午9.49.04.png

7、贪婪模式

示例:使用.*?取消贪婪模式

屏幕快照 2017-10-24 下午9.53.24.png

8、正则表达式常用函数

屏幕快照 2017-10-24 下午9.54.06.png

示例1:匹配以139开头的11位手机号

<?php
//匹配139开头的11位手机号码
$str = '13988888888';
$pattern = '/^139\d{8}$/';
preg_match($pattern,$str,$match);
var_dump($match);

运行结果:

chenzhitaodeMacBook-Pro:php chenzhitao$ php demo5.php
array(1) {
  [0]=>
  string(11) "13988888888"
}

示例2:匹配img标签中的所有src属性

<?php
//匹配所有img标签中的src属性
$str = '<img alt = "撒旦阿萨德" id = "11" class = "image" src= "my.jpg" />';
$pattern = '/<img.*?src\s*=\s*"(.*?)".*?\/?/i';
preg_match($pattern,$str,$match);
var_dump($match);

运行结果:

chenzhitaodeMacBook-Pro:php chenzhitao$ php  demo6.php
array(2) {
  [0]=>
  string(68) "<img alt = "撒旦阿萨德" id = "11" class = "image" src= "my.jpg""
  [1]=>
  string(6) "my.jpg"
}

相关文章

网友评论

      本文标题:PHP正则表达式

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