文章教程

10.3POSIX扩展正则表达式函数

9/17/2020 9:49:37 PM 人评论 次浏览

10.3 POSIX扩展正则表达式函数

PHP中实现POSIX正则表达式的函数有7个。下面介绍一下主要函数的语法。

10.3.1 字符串匹配函数——ereg()和eregi()

如果要实现字符串的匹配,可以使用函数ereg()或eregi(),其中函数eregi()在进行字符串匹配时不区分大小写,而函数ereg()则区分。语法形式如下。

  bool ereg ( string pattern, string string [, array regs] )

以区分大小写的方式在string中寻找与给定的正则表达式pattern所匹配的子串,如果给出了第三个参数regs,则匹配项将被存入regs数组中,其中,$regs[0]包含整个匹配的字符串。

例10-1 E-mail验证,代码如下。

  <?php
  $email = "hbrjxy001@hbsi.cn";						
  $ereg = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)";	 //邮箱检测
  if(ereg($ereg , $email)) {
  	echo "邮箱合法!";
  } else {
  	echo "邮箱不合法!";
  }
  ?>

运行结果输出如图10-1所示。

image

图10-1 利用正则表达式验证邮箱格式

10.3.2 字符串替换函数——ereg_replace()和eregi_replace()

使用函数ereg_replace()或eregi_replace()可以实现字符串的替换。其中函数eregi_replace()在查找匹配项时不区分大小写。语法形式如下。

  string ereg_replace ( string pattern, string replacement, string string )

以区分大小写的方式在string中扫描与pattern匹配的部分,并将其替换为replacement。返回值为替换后的字符串,如果没有可供替换的匹配项则返回原字符串。

例10-2 字符串替换,代码如下。

  <?php
  $email = "HBSI@gmail.com";
  $mailto = "<a href='mailto:$email'>$email</a>";
  echo $mailto ."<br/>";
  //去掉email链接
  $ereg = "<a([ ]+)href=([\"']*)mailto:($email)([\"'] *)[^>]*>";	
  //<a>标记前半部分匹配正则表达式
  $string = eregi_replace($ereg,"", $mailto);
  $string = eregi_replace("</a>","", $string); 	  //</a>部分
  echo $string;
  ?>

运行结果输出,如图10-2所示。

image

图10-2 字符串使用正则替换

10.3.3 字符串拆分函数——split()和spliti()

函数split()或spliti()能够实现利用正则表达式把一个字符串拆分为一个数组,其中spliti()不区分字符串大小写。语法形式如下。

  array split ( string pattern, string string [, int limit] )

该函数返回一个字符串数组,每个元素为string经区分大小写的正则表达式pattern作为边界分割出的子串。如果设定了limit,则返回的数组最多包含limit个单元,而其中最后一个单元包含string中剩余的所有部分。如果出错,则返回false。

例10-3 字符串拆分,代码如下。

  <?php
  $date = "2015-03-29  10:10:10";
  $ereg = "[-:/]|([ ]+)";		//使用-,:,/ 或者空格作为分隔符
  $arr = split($ereg , $date);
  echo "<pre>
  ";
  var_dump($arr);
  echo "
  </pre>";
  ?>

运行结果输出,如图10-3所示。

image

图10-3 字符串使用正则拆分

教程类别