博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11.2、正则表达式Perl风格函数的应用
阅读量:6872 次
发布时间:2019-06-26

本文共 2540 字,大约阅读时间需要 8 分钟。

PHP 为使用 Perl 兼容的正则表达式搜索字符串提供了7个函数:
  1. preg_grep()
  2. preg_match()
  3. preg_match_all()
  4. preg_auote()
  5. preg_replace()
  6. preg_replace_callback()
  7. preg_split()
 
 PHP Code  By http://t.qq.com/tony-src
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
    
/**
     * 1.preg_grep() 搜索字符串,搜索数组中的所有元素,返回由与某个模式匹配的所有元素组成的数组
     */
    $language = 
array
(
'php'
,
'asp'
,
'jsp'
,
'python'
,
'ruby'
);
    $mode = 
'/p$/'
;
    print_r(preg_grep($mode, $language));
    
?>
<?php 
echo
 
'<br />'
?>
<?php 
    
    
/**
     * 2.preg_match() 搜索模式,最后返回 的是真或假,1/0
     */
    
echo
 preg_match(
'/php[1-6]/'
'php5'
);
    
    
// 电子邮件小案例
    $mode = 
'/([\w\.]{2,255})@([\w\-]{1,255}).([a-z]{2,4})/'
;
    $string = 
'tony.w.src@gmail.com'
;
    
if
 (preg_match($mode, $string)){
        
echo
 
'电子邮件合法'
;
    } 
else
 {
        
echo
 
'电子邮件不合法'
;
    }
?>
<?php 
echo
 
'<br />'
?>
<?php 
    
/**
     * 3.preg_match_all() 匹配模式的所有出现,然后将所有匹配到的全部放入数组
     */
    preg_match_all(
'/php[1-6]/'
'php5sdfsdsfphp4dsfsdfphp6fsdf'
, $out);
    print_r($out);
?>
<?php 
echo
 
'<br />'
?>
<?php 
    
/**
     * 4.preg_quote() 定界特殊的正则表达式,在每个对于正则表达式语法而言有特殊含义的字符前插入一个反斜线。
     * 这些特殊字符包含:$^*()+={}[]\\:<>
     */
    
echo
 preg_quote(
'php 的价格是:$150'
)
?>
    
<?php 
echo
 
'<br />'
?>
<?php 
    
/**
     * 5.preg_replace() 替换模式的所有出现,搜索到所有匹配,然后替换成想要的字符串返回 出来
     */
    
echo
 preg_replace(
'/php[1-5]/'
'python'
'php5dfsfphp6dsfsdfphp3'
);
    
    
echo
 
'<br />'
;
    
    
// 贪婪和分组获取的使用
    $mode = 
'/\[b\](.*)\[\/b\]/U'
;
    $replace = 
'<strong>\1</strong>'
;
    $string = 
'This is a [b]php5[/b],This is a [b]php4[/b]'
;
    
echo
 preg_replace($mode, $replace, $string);
    
?>
<?php 
echo
 
'<br />'
?>
<?php 
    
/**
     * 6.preg_replace_callback() 执行一个正则表达式搜索并且使用一个回调进行替换
     */
 
    
// 将文本中的年份增加一年.
    $text = 
"April fools day is 04/01/2002\n"
;
    $text.= 
"Last christmas was 12/24/2001\n"
;
    
// 回调函数
    
function
 next_year($matches)
    {
        
// 通常: $matches[0]是完成的匹配
        
// $matches[1]是第一个捕获子组的匹配
        
// 以此类推
        
return
 $matches[
1
].($matches[
2
]+
1
);
    }
    
echo
 preg_replace_callback(
            
'|(\d{2}/\d{2}/)(\d{4})|'
,
            
'next_year'
,
            $text);
    
?>
<?php 
echo
 
'<br />'
?>
<?php 
    
/**
     * 7.prep_split() 以不区分大小写的方式将字符串划分为不同的元素
     */
 
    print_r(preg_split(
'/@/'
'tony.w.src@gmail.com'
));
    
// 按 . 与 @ 进行分割
    print_r(preg_split(
'/[\.@]/'
'tony.w.src@gmail.com'
));
    
?>
 
注:
    目前为 PHP 使用 POSIX 风格的正则表达式搜索字符串提供了 7 个函数,包括:
ereg()、ereg_replace()、eregi()、eregi_replace()、split()和sql_replace()。
PS: 和 Perl 风格基本相同,参考手册学习。

转载于:https://www.cnblogs.com/tonycody/archive/2012/12/24/2830468.html

你可能感兴趣的文章
OpenCms JSP 模板开发——创建一个简单的JSP模板
查看>>
百度网盘上下载文件,调用api接口的请求方式和参数
查看>>
Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
查看>>
js 自定义类
查看>>
caddy server 默认https && http2的验证
查看>>
物联网数据卡系统源码——通信模块整体概述
查看>>
《学习OpenCV3》目录和全书划分
查看>>
翻转字符串
查看>>
生活娱乐 24岁姑娘端22碗米粉面不改色
查看>>
2-05. 求集合数据的均方差(15) (数学啊 ZJU_PAT)
查看>>
城市公交网建设问题
查看>>
Android图片加载框架Picasso最全使用教程5
查看>>
静态与伪静态
查看>>
SAML
查看>>
安装配置PhoneGap开发环境(一)
查看>>
设计模式学习笔记--备忘录(Mamento)模式
查看>>
OGG目的端的checkpoint table被drop的修复方法
查看>>
android 通过bitmapfactory得到图片真实像素的方法,以及没有得到真实像素的原因
查看>>
SVN 常见命令
查看>>
poj 2299 Ultra-QuickSort
查看>>