• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

11.2、正则表达式Perl风格函数的应用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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 = 
'[email protected]';
    
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(
'/@/''[email protected]'));
    
// 按 . 与 @ 进行分割
    print_r(preg_split('/[\.@]/''[email protected]'));
    
?>
 
注:
    目前为 PHP 使用 POSIX 风格的正则表达式搜索字符串提供了 7 个函数,包括:
ereg()、ereg_replace()、eregi()、eregi_replace()、split()和sql_replace()。
PS: 和 Perl 风格基本相同,参考手册学习。





鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Perl面向对象(3):解构——对象销毁发布时间:2022-07-22
下一篇:
Perl默认变量==发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap