文档章节

正则表达式之——POSIX正则表达式函数

CoderAndy
 CoderAndy
发布于 2014/04/08 17:36
字数 1075
阅读 98
收藏 5

POSIX正则表达是PHP编译器的默认风格,PHP中还提供了许多POSIX正则表达式函数,例如ereg()、eregi()、split()和sql_regcase()等。

1. ereg()函数

ereg()函数可以再字符串中查找与指定正则表达式模式相匹配的子串,其语法格式为:

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

功能说明

以区分大小写的方式在string中寻找与给定的正则表达式pattern所匹配的子串。 如果找到与pattern中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数regs,则匹配项将被存入regs数组中。$regs[1] 包含第一个左圆括号开始的子串,$regs[2] 包含第二个子串,以此类推。$regs[0] 包含整个匹配的字符串。 如果在string中找到pattern模式的匹配则返回 true,如果没有找到匹配或出错则返回 false

参数说明

pattern:指定相应的正则表达式

string:指定需要进行模式匹配的字符串

regs:用来存放匹配结果,其中的regs[0]为原字符串string;regs[1]为第一个符合匹配规则的字符串;regs[2]为第二个符合匹配规则的字符串,余下依次类推。若省略该参数,则表示只是单纯匹配,若匹配则成功则返回true,否则返回false。

例1

      使用POSIX字符簇进行验证,其功能是校验一个字符串中是否含有字母字符。代码如下:

<?php
$string="a12345";
$pattern="[[:alpha:]]";
if(ereg($pattern, $string)){
echo "在\"$string\"中至少含有一个字母字符";
}
else{
echo "在\"$string\"中不含有任何字母字符";
}
?>


例2

以下代码片断接受 ISO 格式的日期(YYYY-MM-DD)然后以 DD.MM.YYYY 格式显示:

<?php
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Invalid date format: $date";
}
?>

注eregi()函数的用法与ereg()函数相同,但是这个函数不区分大小写。

2. split()函数

split()函数使用正则表达式来把字符串拆分为较小的块,作为一个数组返回。如果出现错误,则split()返回false。使用split()函数还可以根据需要选择要返回多少个小块。split()函数的语法格式如下:

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

功能说明

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

参数说明:

pattern:指定相应的正则表达式

string:指定需要进行分割的字符串

limit:指定将字符串string切分的最大数目。该参数的默认值为-1,表示没有限制。

例3

使用split()函数进行拆分字符串“3*5+i/6-12”,代码如下:

<?php
$expression="3*5+i/6-12";
$pattern="[+/-]";
$limit=5;
$part=split($pattern, $expression, $limit);
print_r($part);
?>

结果为:

Array ( [0] => 3*5 [1] => i [2] => 6 [3] => 12 )

3. ereg_replace()函数

ereg_replace()函数可以用来查找和替换子字符串,该函数与字符串处理函数str_replace()实现的功能的功能是一样的,其语法格式如下:

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

功能说明:

该函数在string中扫描与pattern匹配的部分,并将其替换为replacement。返回替换后的字符串,如果没有可供替换的匹配的选项则会返回原字符串。

参数说明:

       pattern:指定的相应正则表达式

       replacement:指定替换的内容

       string:指定需要进行替换的字符串

       ereg_replace()函数将在string中查找符合pattern规则的字符串,并且用replacement进行替换。

例4:

使用ereg_replace()函数将字符串“欢迎来到上海”中的“上海”替换为“巴中”,代码如下:

<?php  
$pattern="上海";  
$string="欢迎来到上海";  
$replacement="巴中";  
echo ereg_replace($pattern,$replacement,$string);  
?>

结果:

        欢迎来到巴中


引用文献:

《大道PHP LAMP+Zend+开源框架整合开发与实战》

《PHP手册》


未完待续…

© 著作权归作者所有

CoderAndy
粉丝 0
博文 7
码字总数 4316
作品 0
奉贤
私信 提问
加载中

评论(0)

《PHP扩展学习系列》系列技术文章整理收藏

《PHP扩展学习系列》系列技术文章整理收藏 1PHP扩展之文本处理(二)——PCRE正则表达式语法10——后向引用 http://www.lai18.com/content/321526.html 2PHP扩展之文本处理(二)——PCRE正则...

开元中国2015
2015/07/11
165
0
Regex C++: 正则表达式(1)

自C++11起标准库提供了正则表达式库,允许我们使用通配符和pattern来查找和替换掉string中的字符. Match: 将整个string拿来匹配某个regex. Search: 查找某个string中与regex吻合的部分. Rep...

SHIHUAMarryMe
2016/08/03
296
0
正则基础 之 NFA引擎匹配原理

NFA引擎匹配原理 1 为什么要了解引擎匹配原理 一个个音符杂乱无章的组合在一起,弹奏出的或许就是噪音,同样的音符经过作曲家的手,就可以谱出非常动听的乐曲,一个演奏者同样可以照着乐谱奏...

SeanCai
2011/04/17
193
0
使用正规表达式编写更好的SQL

Oracle Database 10g 中的正规表达式特性是一个用于处理文本数据的强大工具   Oracle Database 10g 的一个新特性大大提高了您搜索和处理字符数据的能力。这个特性就是正规表达式,是一种用...

余二五
2017/11/08
0
0
PostgreSql 功能和操作

1、模式匹配 pg中提供3种模式匹配的方法:传统SQL LIKE 操作;最近的SIMILAR TO操作(1999添加到SQL);POSIX-style正则表达式。 函数可用来提取or替换一个匹配的子字符串从匹配的位置。若你...

Rksi5
2014/05/15
125
0

没有更多内容

加载失败,请刷新页面

加载更多

记录一题生产者消费者问题

//有一个容器,能存储一定的产品,有put和get方法,有两个生产者,8个消费者的线程阻塞 import java.util.LinkedList; import java.util.concurrent.TimeUnit; public class Test3<T> { Lin...

南桥北木
29分钟前
13
0
线程池源码解读——回归基础

线程池源码解读——回归基础 线程池源码解读——回归基础 线程池的好处: JDK提供的创建线程池: java 中创建线程的方式: 线程池源码解读: 记录的知识点: 线程池的好处: 降低资源的开销 ...

lihua20103181
31分钟前
70
0
2D游戏开发课程学习笔记(6)-pygame小游戏开发

游戏简介 使用pycharm开发的小游戏《嗷大喵快跑》。是一款比较简单的酷跑游戏,只有5关。 玩法介绍 按空格键控制可以让猫跳跃,要同时躲避子弹和恶龙的袭击。 结束以后会有高分榜。 游戏预览...

pl彭莉
34分钟前
41
0
pygame制作小游戏——魔塔大闯关

pygame制作小游戏——魔塔大闯关 开发工具:vscode 游戏介绍:一开始玩家有100的生命值,10的攻击力,10的防御力,玩家可以通过获得相应颜色的钥匙来打开相应颜色门,玩家可开挂一次,通过点...

JulYi
36分钟前
8
0
垃圾回收:可达性分析算法、生存还是死亡(两次标记)

判断哪些内存需要回收 引用计数算法、可达性分析算法。引用计数算法优点实现简单,但是无法判断循环引用。 可达性分析算法:通过一系列的GC ROOTS作为起点,往下搜索,所走过的路径叫引用链。...

mrsuperli
38分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部