Home > php教程 > php手册 > body text

第九章 正则表达式

WBOY
Release: 2016-06-13 09:39:50
Original
1028 people have browsed it

注:文章出自李炎恢PHP视频教程,本文仅限交流使用,不得用于商业用途,否则后果自负。

学习要点:
1.正则表达式语法(Perl 风格)
2.正则表达式中的元素
3.Perl 风格函数

 

处理字符串时,有很多较为复杂的字符串用普通的字符串处理函数无法干净的完成。比
如说,可能需要验证一个Email 地址是否合法,为此需要查看许多不容易检查的规则。这正
是正则表达式的用武之地。正则表达式是功能强大而简明的字符组,其中可以包含大量的逻
辑,特别值得一提的是正则表达式相当简短。

一.正则表达式语法(Perl风格)

Perl 一直被认为是最伟大的解析语言之一,它提供了一种全面的正则表达式,即使是最
复杂的字符串模式,也可以用这种正则表达式语言搜索和替换。PHP 开发人员认识到,与
其重新发明正则表达式,不如让PHP 用户直接使用声名赫赫的Perl 正则表达式语言,即Perl
风格的函数。
模式规则:/php/ 在字符串前后加上两条斜杠即可。
匹配函数:preg_match()函数在字符串中搜索模式,如果存在则返回true,否则返回false。

<?<span php
</span><span preg_match</span>('/php/','php'<span );
</span>?>
Copy after login

二.正则表达式中的元素

正则表达式中包含三种元素分别为:量词、元字符、修饰符

量词

元字符

修饰符

三.Perl风格函数

PHP 为使用Perl 兼容的正则表达式搜索字符串提供了7 个函数,包括:preg_grep()、
preg_match()、preg_match_all()、preg_auote()、preg_replace()、preg_replace_callback()和
preg_split()。
搜索字符串:preg_grep()函数搜索数组中的所有元素,返回由与某个模式匹配的所有元
素组成的数组。

<?<span php
</span><span $language</span> = <span array</span>('php','asp','jsp','python','ruby'<span );
</span><span print_r</span>(<span preg_grep</span>('/p$/',<span $language</span><span ));
</span>?>
Copy after login

搜索模式:preg_match()函数在字符串中搜索模式,如果存在则返回true,否则返回false。

<?<span php
</span><span echo</span> <span preg_match</span>('/php[1-6]/','php5'<span );
</span>?>
Copy after login

电子邮件验证小案例(分组应用)

<?<span php
</span><span $mode</span> = '/([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})/'<span ;
</span><span $string</span> = 'yc60.com@gmail.com'<span ;
</span><span echo</span> <span preg_match</span>(<span $mode</span>,<span $string</span><span );
</span>?>
Copy after login

匹配模式的所有出现:preg_match_all()函数在字符串中匹配模式的所有出现,然后将所
有匹配到的全部放入数组。

<?<span php
</span><span preg_match_all</span>('/php[1-6]/','php5sdfphp4sdflljkphp3sdlfjphp2',<span $out</span><span );
</span><span print_r</span>(<span $out</span><span );
</span>?>
Copy after login

定界特殊的正则表达式:preg_quote()在每个对于正则表达式语法而言有特殊含义的字
符前插入一个反斜线。这些特殊字符包含:$ ^ * () + = {} [] | \\ : <>。

<?<span php
</span><span echo</span> <span preg_quote</span>('PHP的价格是:$150'<span );
</span>?>
Copy after login

替换模式的所有出现:preg_replace()函数搜索到所有匹配,然后替换成想要的字符串返
回出来。

<?<span php
</span><span echo</span> <span preg_replace</span>('/php[1-6]/','python','This is a php5,This is a php4'<span );
</span>?>
Copy after login

ubb 小案例:贪婪问题+分组使用()

<?<span php
</span><span $mode</span> = '/\[b\](.*)\[\/b\]/U'<span ;
</span><span $replace</span> = '<strong>\1</strong>'<span ;
</span><span $string</span> = 'This is a [b]php5[/b],This is a [b]php4[/b]'<span ;
</span><span echo</span> <span preg_replace</span>(<span $mode</span>,<span $replace</span>,<span $string</span><span );
</span>?>
Copy after login

以不区分大小写的方式将字符串划分为不同的元素:preg_split()用来分割不同的元素。

<?<span php
</span><span print_r</span>(<span preg_split</span>('/[\.@]/','yc60.com@gmail.com'<span  ));
</span>?>
Copy after login

注:目前为PHP 使用POSIX 风格的正则表达式搜索字符串提供了7 个函数,包括:ereg()、
ereg_replace()、eregi()、eregi_replace()、split()、spliti()和sql_regcase()。
PS:和Perl 风格基本相同,可以参考手册自行学习。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!