..


赞助商链接

PCRE正则表达式函数(POSIX功能与差异)

由Max博西写文章
第1页4

我们曾暗示已经在最近几天通过我们博客的页面,但今天我想探讨一个话题,我相信会感兴趣的是数以千计的开发者-像我这样的-每天使用PHP开发的Web应用程序。

从版本的PHP 5.3,其实,开发商谁想要利用正则表达式可能不能再利用POSIX函数的使用(可以这么说ereg()等系列),但必须,一定,使用功能PCRE(Perl兼容正则表达式),例如, preg_match() 。

到PHP内置的PCRE功能允许您使用典型的Perl 正则表达式语法(更准确地说,目前的实现提供支持,以5.005的Perl语法),这是轻微的POSIX功能不同。 如需更多关于PCRE语法的信息可以参考手册上提供的官方网站PCRE.org。

比较:preg_match()

如果你想之间的字符串和一个模式 (在正则表达式的形式写了一个模型的比较将需要使用preg_match(),其实,取代ereg()等eregi()。

使用preg_match()在共同使用,非常简单:您传递函数的模式和字符串检查。 如果模式是满意的,函数返回1,如果0(或有错误FALSE)。

事实上迁移额日格()并不复杂的事情。 你会需要一些在小格局的制定匠心。

下面是一个例子:

 



 <?PHP的







如果(preg_match('/ mrwebmaster / I“,”万岁MrWebmaster!')){



  



回声“发现”;







否则{}



  



回声“找不到”;







 }







 ?>

 
这是相同的:
 



 <?PHP的







如果(eregi('mrwebmaster“,”万岁MrWebmaster!')){



  



回声“发现”;







否则{}



  



回声“找不到”;







 }







 ?>

 

在我们使用preg_match()简单的例子,我们作为一个模式串

 



 / Mrwebmaster / S

 
让我们来看看语法:
  • / ... ... / -分隔的开始和结束的体现;
  • mrwebmaster -是一个简单的字符串,你要检查作为第二个参数传递的文本;
  • - “我”在结束定界符表示搜索应不区分大小写(就像是使用函数eregi()完成)。 从技术上讲这个“我”是一个修饰词中, 这个页面是在PCRE语法允许修饰符的完整列表。

与额日格差()

正如你可以看到与额日格差()不是很多,让我们简要地总结一下他们:

  • 使用分隔符/ ... ... /(实际上你可以使用其他字符作为分隔符,但斜线是通常的选择);
  • 不区分大小写的版本(eregi())被替换为“我”后闭幕分隔符的使用;
  • 该模式中的字符/的存在将需要(如果您使用斜线作为分隔符) 转义 (\ /)为了不与分隔符相混淆;
  • 在有管理的一些ASCII字符(POSIX的功能,不像PCRE接受数字ASCII字符细微差别:如对应于10号和13个新线回车;与PCRE功能,反之亦然10独家代理的数量十)。
  • 函数额日格()只接受三个参数(模式,文本进行检查,并选择,一个数组来保存结果)和preg_match()承认五(前两个,我们已经看到的,是必需的,其他三个是可选的);

在上述基础上(这已经提到的差异),我们可以重新考虑(部分)关于正则表达式的语法有效的理论解释可以在发现这一页的文章“在PHP正则表达式”献给老POSIX功能。

在同一类...
电子学习
Linux操作系统(课程) Linux操作系统(课程)
完整指南开源系统。 从49€。
MySQL的(课程) MySQL的(课程)
管理的开放源码数据库。 从39€。
PHP(课程) PHP(课程)
全部课程用于创建动态Web站点。 从49€。
赞助商链接