GVKun编程网logo

PHP语言基础知识08PHP中正则表达式(php中的正则表达式)

18

如果您想了解PHP语言基础知识08PHP中正则表达式和php中的正则表达式的知识,那么本篇文章将是您的不二之选。我们将深入剖析PHP语言基础知识08PHP中正则表达式的各个方面,并为您解答php中的正

如果您想了解PHP语言基础知识08PHP中正则表达式php中的正则表达式的知识,那么本篇文章将是您的不二之选。我们将深入剖析PHP语言基础知识08PHP中正则表达式的各个方面,并为您解答php中的正则表达式的疑在这篇文章中,我们将为您介绍PHP语言基础知识08PHP中正则表达式的相关知识,同时也会详细的解释php中的正则表达式的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

PHP语言基础知识08PHP中正则表达式(php中的正则表达式)

PHP语言基础知识08PHP中正则表达式(php中的正则表达式)

正则表达是会在开发中经常看到,它主要用在以下一些地方:匹配邮箱、手机号码、验证码、替换敏感的关键词。例如:涉及政治和骂人的话

PHP的正则表达示定界符的规定如下:定界符,不能用a-zA-Z0-9\ 其他的都可以用。必须成对出现,有开始就有结束。

举例说明正则符号的定义方式:

例子           说明

/中间写正则/         正确

$中间写正则$       正确

%中间写正则%        正确

^中间写正则^         正确

@中间写正则@      正确

(中间写正则)          错误  /\//

A中间写正则A      错误

注:\ 是转义字符 如果在以后正则表达里面需要匹配/ 如下"

///

这个时候真要匹配/的时候需要把定界符里面的/用转义字符转义一下,写成:

/\//

如果你觉得麻烦,遇到这种需要转义的字符的时候可以把两个证斜线(//)定界,改为其他的定界符(##)

正则表达格式:

preg_match(string $正则,string$字符串,array&$结果)

功能:根据$正则变量,匹配$字符串变量,如果存在则返回匹配的个数,把匹配到的结果放到$结果变量里面,如果没有匹配到结果返回0

<?PHP
$zz='/wq/';
$string='ssswqaa';
if(preg_match($zz,$string,$matches)){
echo'匹配到了,结果为:';
var_dumo($matches);
}else{
echo'没有匹配到';
}
?>

我们常用的正则函数有:

// 1.preg_filter                           执行一个正则表达式搜索和替换
// 2.preg_grep                             返回匹配模式的数组条目
// 3.preg_match                            执行一个正则表达式匹配
// 4.preg_match_all                        执行一个全局正则表达式匹配
// 5.preg_replace_callback_array           传入数组,执行一个正则表达式搜索和替换使用回调
// 6.preg_replace_callback                 执行一个正则表达式搜索并且使用一个回调进行替换
// 7.preg_replace                          执行一个正则表达式的搜索和替换
// 8.preg_split                            通过一个正则表达式分隔字符串

 

perl基础知识07【正则表达式】

perl基础知识07【正则表达式】

本页涉及到2块内容

1.模式匹配

   1.1修饰符

   1.2__DATA__文件句柄

   1.3m匹配符,s替换运算符,=~匹配运算符

   1.4保存模式的特殊变量

2.元字符

   2.1.点号"."与换行符与s修饰符关系

   2.2.理解【】的意思

   2.3.贪婪与非贪婪

   2.4.锚定字符

   2.5.匹配交替性

   2.6.分组分簇

   2.7.记忆与捕获($1,$2..)

   2.8.正向前负向前的匹配替换

   2.9.tr函数

   2.10.单双引号的使用场景


-------------------------------------------------------------------------------------------------------------------------------------------------------


-->正则表达式功能很强大,也比较要区级时间去小结,用好它,它可以帮你做很多事情,让你:)哈哈;

答1.1修饰符

-->请列出你所知道的修饰符?

:)if     :)while     :)  foreach    :)  unless    :) until


#if

[oracle@localhost ~]$ perl -ne'
> print if m(03/20/13);
> ' data
03/20/13



#while

[oracle@localhost ~]$ perl -e'
$a=8;
print $a-- while $a>0;
'
87654321[oracle@localhost ~]$ perl -e'
$a=8;
print $a--,while $a>0;         #这边在$a--后加个“,”也不影响结果;
'
87654321



#foreach

[oracle@localhost ~]$ perl -e'
@arr=("aa\n","bb\n","cc\n","\n");
print foreach(@arr);   
'
aa
bb
cc


#unless

[oracle@localhost ~]$ perl -e'
> $a=8;
> print $a unless $a==5;
> '
8


#until

[oracle@localhost ~]$ perl -e'
$a=8;
print $a--,until $a==0;
'
87654321


答1.2(文件句柄)

-->这个比较简单就是嵌在脚本中的文本段

[oracle@localhost ~]$ ./perl07
one
two
three
[oracle@localhost ~]$ cat perl07
#!/usr/bin/perl
while(<DATA>){       
print;       
}
__DATA__
one
two
three

PS:不知道为啥在perl -e' '中扩行没有结果输出?



答1.3

#m匹配,这个在搜索内容带有/方便,m后面的要求配对符号只要不为字母即可,如' '," ",{ }

[oracle@localhost ~]$ cat data
zhang ddcabccc  okjj aagabcdeff
03/15/09
03/13/25
03/20/13

[oracle@localhost ~]$ perl -ne'
print if m(03/20/13);
' data
03/20/13

当然它还有几个选项要记住的,igx选项用得会多些;


-x的选项用得少些

[oracle@localhost ~]$ perl -ne'
> print if /03\/20\/13 #this is comment/x;
> ' data
03/20/13


#s替换运算符,有几个选项,用得比较多的是eigx,除e外其它与上面的几个选项类似;



#-e参数是比较少用的,从下面对比中可以看到它的用法;

[oracle@localhost ~]$ perl -ne'
> print if s/15/15*3/e;
> ' data
03/45/09
[oracle@localhost ~]$ perl -ne'
print if s/15/15*3/;
' data
03/15*3/09


#绑定模式运算符

这个运算符一个是在默认的处理变量不为$_时,平时我们的写法是类似

print if /.../;

而当不为默认的$_时,我们就要指明绑定匹配符;

[oracle@localhost ~]$ cat perl07
#!/usr/bin/perl
while($inputline=<DATA>){       
print $inputline if $inputline =~ /on/;       
}
__DATA__
one
two
three

#从上面可以看到$_--->$inputline;


答1.4-保存模式的特殊变量

这里涉及到3个变量$&,$`,$';后2个一个是反引,一个是单引;

$&:表示是上一个匹配模式中查找的内容;

$`:上一次查找匹配模式内容的前面的内容;

$':上一次查找匹配模式内容的后面的内容;

[oracle@localhost ~]$ ./perl07  
okjj
zhang ddcabccc  
aagabcdeff
[oracle@localhost ~]$ cat perl07
#!/usr/bin/perl
$_='zhang ddcabccc  okjj aagabcdeff';
/okjj/;
print $&,"\n";
/okjj/;
print $`,"\n";
/okjj\s/;
print $',"\n";



答2.元字符

包含内容:

2.1.点号"."与换行符与s修饰符关系

2.2.理解【】的意思

2.3.贪婪与非贪婪

2.4.锚定字符

2.5.匹配交替性

2.6.分组分簇

2.7.记忆与捕获($1,$2..)

2.8.正向前负向前的匹配替换

2.9.tr函数

2.10.单双引号的使用场景

-------------------------------------------------------------------------------

答2.12.1.点号"."与换行符与s修饰符关系

可以看到加了s修饰符会把\n当作是一个点号"."能匹配到的字符;

如果没有加“s”修饰符那么\n将会执行换行;

[oracle@localhost ~]$ perl -e'
> $a="zhang bao\nkun";
> $a =~ s/.*/ha/ig;
> print $a;
> '
haha  #这里执行了换行
haha[oracle@localhost ~]$ perl -e'
$a="zhang bao\nkun";
$a =~ s/.*/ha/s;
print $a;
'
ha

-------------------------------------------------------------------------------


答2.2.理解【】的意思

看个例子:if /[A-Za-z0-9_]/; #知道这个代表是什么?

zhang 

2342

zhang 2342

zhang ___

_ _ _ _

结果是上面的行都符合,它代表是含有“大写字母or小写字母or数字or下划线"_"

-------------------------------------------------------------------------------

答2.3.贪婪与非贪婪,可以看到非贪婪就是按最小的匹配原则,贪婪就是按最大的匹配原则;

#贪婪与非贪婪的区别例子
(The Script)
# Greedy and not greedy
1 $_="abcdefghijklmnopqrstuvwxyz";
2 s/[a-z]+/XXX/;
3 print $_,"\n";
4 $_="abcdefghijklmnopqrstuvwxyz";
5 s/[a-z]+?/XXX/;
6 print $_,"\n";
(Output)
3 XXX
6 XXXbcdefghijklmnopqrstuvwxyz


答:2.4.锚定字符

这里我们只关注难理解,常见开头结尾(^,$)就忽略不讲;

从测试结果来看^,$,\A,\Z,\z几个关于首尾的使用上没什么不同,待日后再确定?


#看下\G意思

下面这段摘抄于官档

Here's how to use m//gc with\G:

 
 
  1. $_ = "ppooqppqq";
  2. while ($i++ < 2) {
  3. print "1: '";
  4. print $1 while /(o)/gc; print "',pos=", pos, "\n";
  5. print "2: '";
  6. print $1 if /\G(q)/gc; print "', "\n";
  7. print "3: '";
  8. print $1 while /(p)/gc; print "', "\n";
  9. }
  10. print "Final: '$1',pos,"\n" if /\G(.)/;

The last example should print:

 
 
  1. 1: 'oo',pos=4
  2. 2: 'q',pos=5
  3. 3: 'pp',pos=7
  4. 1: '',pos=7
  5. 2: 'q',pos=8
  6. 3: '',pos=8 #位置已经到结尾,加了/c参数位置不会被重置从0开始
  7. Final: 'q',pos=8 /\G(.)/这个匹配的就是结尾'q'的最后一次匹配的位置
#至于pos是一个变量,可以查阅官档;

http://perldoc.perl.org/functions/pos.html

#\b和\B

[oracle@localhost ~]$ perl -ne'
print if /\b555\b/;
' data
bao 555
555 8
[oracle@localhost ~]$ cat data
zhang 5555 66
bao 555
555 8

#\b边界包括旁边为空格或者在行首或行尾的情况,行首和行尾有一侧是没有空格的;

#\B与\b是相反,这里不举例说明;


答2.5.匹配交替性

#这个比较简单

[oracle@localhost ~]$ cat data
zhang 5555 66
bao 555
555 8
[oracle@localhost ~]$ perl -ne'
> print if /66|8/;
> ' data
zhang 5555 66
555 8

#相当于是grep -E这个参数的作用;

答2.6.分组分簇

# 这个也比较简单,无非是将要匹配的字符放在一起用|隔开用括号括起的小模式结构;

[oracle@localhost ~]$ cat data
zhao 5555 66
bao 555
555 8
[oracle@localhost ~]$ perl -ne'
> print if /(zh|b)ao/;
> ' data
zhao 5555 66
bao 555

答2.7.记忆与捕获($1,$2..)

#这个比较常用,而且也比较有用;

#先看个例子在行的前后增加“|”;

[oracle@localhost ~]$ cat data
zhao 5555 66
bao 555
555 8
[oracle@localhost ~]$ perl -ne'
> $_ =~ s/(.*)/\|$1\|/;      #这边的$就是记忆捕获前面第一个括号的(.*)匹配的字符,这个匹配字符就是整行;
> print;
> ' data
|zhao 5555 66|
|bao 555|
|555 8|


再看另一例子

[oracle@localhost ~]$ cat data
zhao 5555 66
bao 555
555 8


[oracle@localhost ~]$ perl -ne'
$_ =~ /(.*)\s(\w+)/;        #第一个括号对应$1,第二个对应$2;
print $1,"---",$2,"\n";
' data
zhao 5555---66
bao---555
555---8


答2.8.正向前负向前的匹配替换


这个也是简单的,只要记住下符号即行;

概括:没有!意思就是指不匹配的结构称作“负”,有就是指匹配结构称作“正”;

向前与向后是针对所查找的小括号的内的字符的位置而言,放前面的匹配查找就是“正向前查找”;

[oracle@localhost ~]$ perl -ne'
$_ =~  s/ren(?= min)/888/;
print $_;' data
zhang hua 888 min ren

[oracle@localhost ~]$
[oracle@localhost ~]$ cat data
zhang hua ren min ren


[oracle@localhost ~]$ cat data
zhang hua ren min ren

[oracle@localhost ~]$ perl -ne'
$_ =~  s/ren(?! min)/888/;
print $_;' data
zhang hua ren min 888


[oracle@localhost ~]$ perl -ne'
$_ =~  s/(?<= min) ren/ 888/g;  #注意ren前面有一个空格!
print $_;' data
zhang hua min 888 min 888

[oracle@localhost ~]$ cat data
zhang hua min ren min ren


[oracle@localhost ~]$ cat data
zhang hua min ren min ren ren
zhang hua ren

[oracle@localhost ~]$ perl -ne'
$_ =~  s/(?<! min) ren/ 888/g;
print $_;' data
zhang hua min ren min ren 888
zhang hua 888


答:2.9.tr函数

这个用得少一些,将三个选项举例:

#/d/选项前面搜索的字符是或的关系而不是完全匹配,看下面的变化就清楚了;

[oracle@localhost ~]$ perl -ne'
$_ =~ tr/z//d;    
print;
' data
hang hua min ren min ren ren
hang hua ren

[oracle@localhost ~]$ perl -ne'
$_ =~ tr/zh//d;
print;
' data
ang ua min ren min ren ren
ang ua ren

[oracle@localhost ~]$ perl -ne'
$_ =~ tr/zha//d;
print;
' data
ng u min ren min ren ren
ng u ren

[oracle@localhost ~]$ perl -ne'
$_ =~ tr/zhan//d;             #也就是包含有z或h或a或n的字符全部删除;
print;
' data
g u mi re mi re re
g u re


#/c选项意思

[oracle@localhost ~]$ perl -ne'
$_ =~ tr/zhang/*/c;
print;
' data
zhang*h*a***n***n***n***n***n*zhang*h*a***n**[oracle@localhost ~]$

#跟上面的匹配关系是相反的;

也就是对于上面这个例子对于不包含z或h或a或n或g的字符用*替换包含替代掉"\n";


#/s选项意思

[oracle@localhost ~]$ perl -ne'
$_ =~ tr/ //s;
print;
' data
zhang hua min ren min ren ren
zhang hua ren

[oracle@localhost ~]$ cat data
zhang   hua         min ren min ren ren
zhang hua ren

#将重复的字符压缩为相同的一个;如上例前多个空格压缩为一个空格;

答  2.10.单双引号的使用场景

[oracle@localhost ~]$ cat tmpperl #!/usr/bin/perl $a='this is a var test'; print "$a"."111111\n"; $b="this is a var test"; print "$b"."222222\n"; print '$b'."333333\n"; print '$a'."444444\n"; [oracle@localhost ~]$ ./tmpperl   this is a var test111111      #可以看到对于变量用单引和双引都可正常输出; this is a var test222222 $b333333                        #可以看到在print函数中变量必须用双引包含; $a444444

PHP 基础教程1 php语言基础 php0基础 php基础实

PHP 基础教程1 php语言基础 php0基础 php基础实

什么是 php 文件?

PHP 文件能够包含文本、HTML、CSS 以及 PHP 代码
PHP 代码在服务器上执行,而结果以纯文本返回浏览器
PHP 文件的后缀是 “.php”


PHP 能够做什么?

PHP 能够生成动态页面内容
PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
PHP 能够接收表单数据
PHP 能够发送并取回 cookies
PHP 能够添加、删除、修改数据库中的数据
PHP 能够限制用户访问网站中的某些页面
PHP 能够对数据进行加密
通过 PHP,您可以不受限于只输出 HTML。您还能够输出图像、PDF 文件、甚至 Flash 影片。您也可以输出任何文本,比如 XHTML 和 XML。


PHP 支持三种注释:

<span><span>html</span>&gt;</span><span>body</span>&gt;<span><span><?php </span><span>// 这是单行注释</span><span># 这也是单行注释</span><span>/*
这是多行注释块
它横跨了
多行
*/</span><span>?&gt;</span></span><span><span>body</span>&gt;</span><span><span>html</span>&gt;</span></span>
登录后复制

PHP 大小写敏感

在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感。
在下面的例子中,所有这三个 echo 语句都是合法的(等价):
实例

<span><span>html</span>&gt;</span><span>body</span>&gt;<span><span><?php </span><span>ECHO</span><span>"Hello World!<br>"</span>;
<span>echo</span><span>"Hello World!<br>"</span>;
<span>EcHo</span><span>"Hello World!<br>"</span>;
<span>?&gt;</span></span><span><span>body</span>&gt;</span><span><span>html</span>&gt;</span></span>
登录后复制

Hello World!
Hello World!
Hello World!


不过在 PHP 中,所有变量都对大小写敏感。
在下面的例子中,只有第一条语句会显示 colorcolor、COLORcoLOR 被视作三个不同的变量):
实例

<span><span><span>html</span>&gt;</span><span>body</span>&gt;</span><span><span><?php </span><span>$color</span>=<span>"red"</span>;
<span>echo</span><span>"My car is "</span> . <span>$color</span> . <span>"<br>"</span>;
<span>echo</span><span>"My house is "</span> . <span>$COLOR</span> . <span>"<br>"</span>;
<span>echo</span><span>"My boat is "</span> . <span>$coLOR</span> . <span>"<br>"</span>;
<span>?&gt;</span></span><span><span>body</span>&gt;</span><span><span>html</span>&gt;</span></span>
登录后复制

My car is red
My house is
My boat is


PHP 5 echo 和 print 语句

立即学习“PHP免费学习笔记(深入)”;

PHP echo 和 print 语句

echo 和 print 之间的差异:
echo - 能够输出一个以上的字符串
print - 只能输出一个字符串,并始终返回 1
提示:echo 比 print 稍快,因为它不返回任何值。

PHP echo 语句
echo 是一个语言结构,有无括号均可使用:echo 或 echo()。

<span><span>html</span>&gt;</span><span>body</span>&gt;<span><span><?php </span><span>echo</span><span>"<h2>PHP 很有趣!</h2>"</span>;
<span>echo</span><span>"Hello world!<br>"</span>;
<span>echo</span><span>"我计划学习 PHP!<br>"</span>;
<span>echo</span><span>"这段话"</span>, <span>"由"</span>, <span>"多个"</span>, <span>"字符串"</span>, <span>"串接而成。"</span>;
<span>$txt1</span>=<span>"Learn PHP"</span>;
<span>$txt2</span>=<span>"W3School.com.cn"</span>;
<span>$cars</span>=<span>array</span>(<span>"Volvo"</span>,<span>"BMW"</span>,<span>"SAAB"</span>);
<span>echo</span><span>$txt1</span>;
<span>echo</span><span>"<br>"</span>;
<span>echo</span><span>"Study PHP at $txt2"</span>;
<span>echo</span><span>"<br>"</span>;
<span>echo</span><span>"My car is a {$cars[0]}"</span>;

<span>?&gt;</span></span><span><span>body</span>&gt;</span><span><span>html</span>&gt;</span></span>
登录后复制

Hello world!
我计划学习 PHP!
这段话由多个字符串串接而成。
Learn PHP
Study PHP at W3School.com.cn
My car is a Volvo

PHP print 语句
print 也是语言结构,有无括号均可使用:print 或 print()。

<span><span><span>html</span>&gt;</span><span>body</span>&gt;</span><span><span><?php </span><span>print</span><span>"<h2>PHP is fun!</h2>"</span>;
<span>print</span><span>"Hello world!<br>"</span>;
<span>print</span><span>"I''m about to learn PHP!"</span>;

<span>$txt1</span>=<span>"Learn PHP"</span>;
<span>$txt2</span>=<span>"W3School.com.cn"</span>;
<span>$cars</span>=<span>array</span>(<span>"Volvo"</span>,<span>"BMW"</span>,<span>"SAAB"</span>);
<span>print</span><span>$txt1</span>;
<span>print</span><span>"<br>"</span>;
<span>print</span><span>"Study PHP at $txt2"</span>;
<span>print</span><span>"<br>"</span>;
<span>print</span><span>"My car is a {$cars[0]}"</span><span>?&gt;</span></span><span><span>body</span>&gt;</span><span><span>html</span>&gt;</span></span>
登录后复制

PHP is fun!

Hello world!
I’m about to learn PHP!
Learn PHP
Study PHP at W3School.com.cn
My car is a Volvo

'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了PHP 基础教程1,包括了php,基础方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

PHP与正则表达系列之一: PHP中的正则表达式

PHP与正则表达系列之一: PHP中的正则表达式

今天起,会开始弄一个PHP教程系列文章. 主要是针对正则表达式的。

大概的内容排序是这样安排的:

1. PHP 中的正则表达式

2. 八个实用的PHP正则表达式

3. 如何书写更易阅读的PHP正则表达式

4. 半小时精通正则表达式

5. 正则在文章采集系统中的应用及常见问题答疑

6. ...更多策划中

文章内容来源方面,有本站旧文重新整理而来,也有翻译英文文献而来(感谢在加拿大的!oEL同学),还有些是个人心得。

个人能力有限,肯定有一些错误,发现的朋友请给予提醒以及时更正. 不至误导新手. 如果文章能给大家一些参考,就很满足了。

PHP与正则表达系列之: PHP 中的正则表达式

正则表达式简介及正则表达式在PHP中的作用

正则表达式是一种表示规则的途经,在 PHP 中利用这些规则可以让你灵活变通地匹配、检验、替换以及字符串。本文涉及到 PCRE 的基础,以及如何使用 preg_match(),preg_replace(),and preg_split() 函数。

接下来就让我们从实例循序渐进地开始学习如何使用这些函数。

规则匹配 preg_match

利用 preg_match(),我们可以完成字符串的规则匹配。如果找到一个匹配,preg_match() 函数返回 1,否则返回 0。还有一个可选的第三参数可以让你把匹配的部分存在一个数组中。在验证数据时这个功能可以变得非常有用。


$string = "football";
if (preg_match(''/foo/'', $string)) {
// 匹配正确
}


上面的例子将成功匹配,因为单词 football 里面包含 foo。现在我们来试一个更复杂的,例如验证一个 Email 地址。


$string = "first.last@domain.uno.dos";
if (preg_match(
''/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/'',
$string)) {
// 验证Email地址
}


这个例子将验证出此 Email 地址为正确格式。现在让我们来看看这段正则表达式所代表的各种规则。

PCRE 顾名思义,与在 Perl 中的正则表达式有相同的语法,所以每段正则表达式必须要有一对定界符。我们一般使用 / 为定界符。

开头的 ^ 和结尾的 $ 让PHP从字符串开头检查到结尾。假使没有 $,程序仍会匹配到 Email 的末尾。

[ 和 ] 被用来限制许可输入类型。例如 a-z 允许所有的小写字母,A-Z 允许所有的大写字母,0-9 所有数字,等等,以及更多其他类型。

{ 和 } 被用来限制期望的字符数。例如 {2,4} 表示字符串的每一节可以有 2-4 字符长度,像是 .com.cn 或 .info。在这里, "." 并不算一个字符,因为 {2,4} 之前定义的许可输入类型只有大小写字母,故此段只匹配大小写字母

( 和 ) 被用来合并小节,并定义字符串中必须存在的字符。(a|b|c) 能够匹配 a 或 b 或 c。

(.) 将匹配所有字符,而 [.] 只匹配 "." 本身。

要使用一些符号本身,必须在前增加一个 。这些字符有: ( ) [ ] . * ? + ^ | $

规则替换 preg_replace

preg_replace 允许你替换字符串中匹配到你定义的正则表达式。一个简单的注释移除功能:

preg_replace(''[(/*)+.+(*/)]'', '''', $val);

这段代码可以移除在 PHP 和 CSS 中使用 /* 注释 */ 格式的多多行注释。其中的三个参数分别为正则表达式,要替换成的字符串和要替换的目标字符串(这里要做移除功能,所以是个空白字符串 -> '''')。如果你想匹配次级规则,可以使用 $0 代表全部匹配,$1、$2 等,以此类推代表分别的次级规则。

规则分割preg_split

preg_split 可以将整段字符串按匹配到的正则表达式分割成 1、2或更多字符的多段。比如获取标签,无论是用空格还是逗号分隔的:



$tags = preg_split(''/[,]/'', ''my,tags,unevenly,spaced'');
print_r($tags);


正则表达式是一个很实用的技巧,让你可以专注于所期望得到的内容。

但有时候一段正则表达式并不能让你如愿以偿得到预期的结果是件很烦人的事,所以我将在本系列的第二篇文章附上一些简单的语法指南希望能够帮到大家。

附:PCRE 语法指南

/ 定界符
^ 字符串头
$ 字符串尾
[a-z] 所有小写字母
[A-Z] 所有大写字母
[0-9] 所有数字
? 零或一个紧接前的字符
* 零或多个紧接前的字符
+ 一或多个紧接前的字符
{4} 4个紧接前的字符
{4,8} 4-8个紧接前的字符
. 任意字符
(red|green|blue) Red 或 green 或 blue(红 或 绿 或 蓝)
s 空格

特殊字符(需要在前加 )
( ) [ ] . * ? + ^ | $

PHP与正则表达系列之一: PHP中的正则表达式_PHP教程

PHP与正则表达系列之一: PHP中的正则表达式_PHP教程

今天起,会开始弄一个PHP教程系列文章. 主要是针对正则表达式的。

大概的内容排序是这样安排的:

1. PHP 中的正则表达式

2. 八个实用的PHP正则表达式

3. 如何书写更易阅读的PHP正则表达式

4. 半小时精通正则表达式

5. 正则在文章采集系统中的应用及常见问题答疑

6. ...更多策划中

文章内容来源方面,有本站旧文重新整理而来,也有翻译英文文献而来(感谢在加拿大的!oEL同学),还有些是个人心得。

个人能力有限,肯定有一些错误,发现的朋友请给予提醒以及时更正. 不至误导新手. 如果文章能给大家一些参考,就很满足了。

PHP与正则表达系列之: PHP 中的正则表达式

正则表达式简介及正则表达式在PHP中的作用

正则表达式是一种表示规则的途经,在 PHP 中利用这些规则可以让你灵活变通地匹配、检验、替换以及字符串。本文涉及到 PCRE 的基础,以及如何使用 preg_match(),preg_replace(),and preg_split() 函数。

接下来就让我们从实例循序渐进地开始学习如何使用这些函数。

规则匹配 preg_match

利用 preg_match(),我们可以完成字符串的规则匹配。如果找到一个匹配,preg_match() 函数返回 1,否则返回 0。还有一个可选的第三参数可以让你把匹配的部分存在一个数组中。在验证数据时这个功能可以变得非常有用。


$string = "football";
if (preg_match(''/foo/'', $string)) {
// 匹配正确
}


上面的例子将成功匹配,因为单词 football 里面包含 foo。现在我们来试一个更复杂的,例如验证一个 Email 地址。


$string = "first.last@domain.uno.dos";
if (preg_match(
''/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/'',
$string)) {
// 验证Email地址
}


这个例子将验证出此 Email 地址为正确格式。现在让我们来看看这段正则表达式所代表的各种规则。

PCRE 顾名思义,与在 Perl 中的正则表达式有相同的语法,所以每段正则表达式必须要有一对定界符。我们一般使用 / 为定界符。

开头的 ^ 和结尾的 $ 让PHP从字符串开头检查到结尾。假使没有 $,程序仍会匹配到 Email 的末尾。

[ 和 ] 被用来限制许可输入类型。例如 a-z 允许所有的小写字母,A-Z 允许所有的大写字母,0-9 所有数字,等等,以及更多其他类型。

{ 和 } 被用来限制期望的字符数。例如 {2,4} 表示字符串的每一节可以有 2-4 字符长度,像是 .com.cn 或 .info。在这里, "." 并不算一个字符,因为 {2,4} 之前定义的许可输入类型只有大小写字母,故此段只匹配大小写字母

( 和 ) 被用来合并小节,并定义字符串中必须存在的字符。(a|b|c) 能够匹配 a 或 b 或 c。

(.) 将匹配所有字符,而 [.] 只匹配 "." 本身。

要使用一些符号本身,必须在前增加一个 。这些字符有: ( ) [ ] . * ? + ^ | $

规则替换 preg_replace

preg_replace 允许你替换字符串中匹配到你定义的正则表达式。一个简单的注释移除功能:

preg_replace(''[(/*)+.+(*/)]'', '''', $val);

这段代码可以移除在 PHP 和 CSS 中使用 /* 注释 */ 格式的多多行注释。其中的三个参数分别为正则表达式,要替换成的字符串和要替换的目标字符串(这里要做移除功能,所以是个空白字符串 -> '''')。如果你想匹配次级规则,可以使用 $0 代表全部匹配,$1、$2 等,以此类推代表分别的次级规则。

规则分割preg_split

preg_split 可以将整段字符串按匹配到的正则表达式分割成 1、2或更多字符的多段。比如获取标签,无论是用空格还是逗号分隔的:



$tags = preg_split(''/[,]/'', ''my,tags,unevenly,spaced'');
print_r($tags);


正则表达式是一个很实用的技巧,让你可以专注于所期望得到的内容。

但有时候一段正则表达式并不能让你如愿以偿得到预期的结果是件很烦人的事,所以我将在本系列的第二篇文章附上一些简单的语法指南希望能够帮到大家。

附:PCRE 语法指南

/ 定界符
^ 字符串头
$ 字符串尾
[a-z] 所有小写字母
[A-Z] 所有大写字母
[0-9] 所有数字
? 零或一个紧接前的字符
* 零或多个紧接前的字符
+ 一或多个紧接前的字符
{4} 4个紧接前的字符
{4,8} 4-8个紧接前的字符
. 任意字符
(red|green|blue) Red 或 green 或 blue(红 或 绿 或 蓝)
s 空格

特殊字符(需要在前加 )
( ) [ ] . * ? + ^ | $

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/363980.htmlTechArticle今天起,会开始弄一个PHP教程系列文章. 主要是针对正则表达式的。 大概的内容排序是这样安排的: 1. PHP 中的正则表达式 2. 八个实用的PHP正则...

今天的关于PHP语言基础知识08PHP中正则表达式php中的正则表达式的分享已经结束,谢谢您的关注,如果想了解更多关于perl基础知识07【正则表达式】、PHP 基础教程1 php语言基础 php0基础 php基础实、PHP与正则表达系列之一: PHP中的正则表达式、PHP与正则表达系列之一: PHP中的正则表达式_PHP教程的相关知识,请在本站进行查询。

本文标签: