0

0

PHP 正则表达式常用函数,php正则表达式函数_PHP教程

php中文网

php中文网

发布时间:2016-07-13 10:20:43

|

887人浏览过

|

来源于php中文网

原创

PHP 正则表达式常用函数,php正则表达式函数

1.preg_match()

函数原型:int preg_match (string $pattern, string $content [, array $matches])
preg_match ()函数在$content字符串中搜索与$pattern给出的正则表达式相匹配的内容。如果提供了$matches,则将匹配结果放入其 中。$matches[0]将包含与整个模式匹配的文本,$matches[1]将包含第一个捕获的与括号中的模式单元所匹配的内容,以此类推。该函数只 作一次匹配,最终返回0或1的匹配结果数。代码6.1给出preg_match()函数的一段代码示例。
代码6.1 日期时间的匹配
代码如下:

<?php 
//需要匹配的字符串。date函数返回当前时间 
$content = "Current date and time is ".date("Y-m-d h:i a").", we are learning PHP together."; 
//使用通常的方法匹配时间 
if (preg_match ("//d{4}-/d{2}-/d{2} /d{2}:/d{2} [ap]m/", $content, $m)) 
{ 
echo "匹配的时间是:" .$m[0]. "/n"; 
} 
//由于时间的模式明显,也可以简单的匹配 
if (preg_match ("/([/d-]{10}) ([/d:]{5} [ap]m)/", $content, $m)) 
{ 
echo "当前日期是:" .$m[1]. "/n"; 
echo "当前时间是:" .$m[2]. "/n"; 
} 
?>

这是一个简单动态文本串匹配实例。假设当前系统时间是“2006年8月17日13点25分”,将输出如下的内容。
匹配的时间是:2006-08-17 01:25 pm
当前日期是:2006-08-17
当前时间是:01:25 pm

2.ereg()和eregi()

ereg()是POSIX扩展库中正则表达式的匹配函数。eregi()是ereg()函数的忽略大小写的版 本。二者与preg_match的功能类似,但函数返回的是一个布尔值,表明匹配成功与否。需要说明的是,POSIX扩展库函数的第一个参数接受的是正则 表达式字符串,即不需要使用分界符。例如,代码6.2是一个关于文件名安全检验的方法。
代码6.2 文件名的安全检验
代码如下:

<?php 
$username = $_SERVER['REMOTE_USER']; 
$filename = $_GET['file']; 
//对文件名进行过滤,以保证系统安全 
if (!ereg('^[^./][^/]*$', $userfile)) 
{ 
die('这不是一个非法的文件名!'); 
} 
//对用户名进行过滤 
if (!ereg('^[^./][^/]*$', $username)) 
{ 
die('这不是一个无效的用户名'); 
} 
//通过安全过滤,拼合文件路径 
$thefile = "/home/$username/$filename"; 
?>

通常情况下,使用与Perl兼容的正则表达式匹配函数perg_match(),将比使用ereg()或eregi()的速度更快。如果只是查找一个字符串中是否包含某个子字符串,建议使用strstr()或strpos()函数。

正则表达式的替换

10分钟内自己学会PHP
10分钟内自己学会PHP

10分钟内自己学会PHP其中,第1篇为入门篇,主要包括了解PHP、PHP开发环境搭建、PHP开发基础、PHP流程控制语句、函数、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、日期和时间等内容;第2篇为提高篇,主要包括MySQL数据库设计、PHP操作MySQL数据库、Cookie和Session、图形图像处理技术、文件和目录处理技术、面向对象、PDO数据库抽象层、程序调试与错误处理、A

下载

1.ereg_replace()和eregi_replace()

函数原型:string ereg_replace (string $pattern, string $replacement, string $string)
string eregi_replace (string $pattern, string $replacement, string $string)
ereg_replace()在$string中搜索模式字符串$pattern,并将所匹配结果替换 为$replacement。当$pattern中包含模式单元(或子模式)时,$replacement中形如“/1”或“$1”的位置将依次被这些子 模式所匹配的内容替换。而“/0”或“$0”是指整个的匹配字符串的内容。需要注意的是,在双引号中反斜线作为转义符使用,所以必须使用“//0”,“ //1”的形式。
eregi_replace()和ereg_replace()的功能一致,只是前者忽略大小写。代码6.6是本函数的应用实例,这段代码演示了如何对程序源代码做简单的清理工作。
代码6.6 源代码的清理
代码如下:

<?php 
$lines = file('source.php'); //将文件读入数组中 
for($i=0; $i<count($lines); $i++) 
{ 
//将行末以“//”或“#”开头的注释去掉 
$lines[$i] = eregi_replace("(////|#).*$", "", $lines[$i]); 
//将行末的空白消除 
$lines[$i] = eregi_replace("[ /n/r/t/v/f]*$", "/r/n", $lines[$i]); 
} 
//整理后输出到页面 
echo htmlspecialchars(join("",$lines)); 
?>

2.preg_replace()

函数原型:mixed preg_replace (mixed $pattern, mixed $replacement, mixed $subject [, int $limit])
preg_replace较ereg_replace的功能更加强大。其前三个参数均可以使用数组;第四个参数$limit可以设置替换的次数,默认为全部替换。代码6.7是一个数组替换的应用实例。
代码6.7 数组替换
代码如下:

<?php 
//字符串 
$string = "Name: {Name}<br>/nEmail: {Email}<br>/nAddress: {Address}<br>/n"; 
//模式 
$patterns =array( 
"/{Address}/", 
"/{Name}/", 
"/{Email}/" 
); 
//替换字串 
$replacements = array ( 
"No.5, Wilson St., New York, U.S.A", 
"Thomas Ching", 
"tom@emailaddress.com", 
); 
//输出模式替换结果 
print preg_replace($patterns, $replacements, $string); 
?>

输出结果如下。

Name: Thomas Ching", 
Email: tom@emailaddress.com 
Address: No.5, Wilson St., New York, U.S.A 

在preg_replace的正则表达式中可以使用模式修正符“e”。其作用是将匹配结果用作表达式,并且可以进行重新运算。例如:
代码如下:

<?php 
$html_body = “<HTML><Body><H1>TEST</H1>My Picture@@##@@</Body></HTML>”; 
//输出结果中HTML标签将全部为小写字母 
echo preg_replace ( 
"/(<//?)(/w+)([^>]*>)/e", 
"'//1'.strtolower('//2').'//3'", //此处的模式变量//2将被strtolower转换为小写字符 
$html_body); 
?>

提示
preg_replace函数使用了Perl兼容正则表达式语法,通常是比ereg_replace更快的替代方案。如果仅对字符串做简单的替换,可以使用str_replace函数。

怎运用PHP函数preg_match_all测试正则表达式效果

  PHP函数preg_match_all代码实例:php自学网2>
 

怎运用PHP函数preg_match_all测试正则表达式效果

今天我们就为大家介绍PHP函数preg_match_all在正则表达式测试中的运用 。 PHP函数preg_match_all代码实例:$html = php自学网php自学网2php自学网3; PHP动态网站开发的技巧分享PHP打印函数的种类总结PHP中$_SERVER的详细资料整理PHP函数stristr()的具体使用方式介绍PHP代码性能优化的技巧讲解 PHP函数preg_match_all实例要求:分别将每一个DIV元素的ID和内容取出,如biuuu,biuuu_2,biuuu_3,php自学网,php自学网2和php自学网3(一些常用的抓站方法就是这样匹配的)分析:字符串是一个简单的HTML元素,每一个DIV元素对应该一个ID和内容,并且是独立的,首先考虑如何取出一个DIV内的ID值和内容, 如:php自学网,然后匹配其它类似的元素 。一个DIV中需要取出两个值,也就是两个匹配的表达式,第一个表达式用于匹配ID值(biuuu),第二个表 达式用于匹配ID的内容(php自学网),正则表达式常用的表达式使用小括号,那么前面的元素将会变成如下形式:(php自学网) (表达式2) 好,使用如上小括号把需要匹配的区域进行了划分,接下来就是如何匹配各个表达式内的内容,我们猜想一个ID可能是字母,数字或下划线,那这就变得简单了,使用中括号就可以实现,如下: 表达式1:[a-zA-Z0-9_]+ (表示匹配大小写字母,数字和下划线) 那如何匹配表达式2,因为ID的内容可以是任意的字符,但是要注意,不能匹配字符,因为如果匹配这两个字符将会把后面使用的DIV都匹配出来,因此需要排除这两个字符开始的元素,也就是不匹配以字符,如下: 表达式2:[^]+ (表示不匹配字符) 这样,PHP函数preg_match_all需要匹配的子表达式就实现了,但是还要需要匹配一个的表达式,方法如下: 表达式:/ "(表达式1)">(表达式2)/ 注意其中的双引号"和/需要使用转义字符转义,然后把前面两个表达式放进去,如下:"([a-z0-9_]+)">/([^]+)/ 这样就实现一个匹配每一个DIV元素ID值和内容的正则表达式,然后使用preg_match_all函数测试如下: $html = php自学网php自学网2php自学网3; p......余下全文>>
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/865250.htmlTechArticlePHP 正则表达式常用函数,php正则表达式函数 1.preg_match() 函数原型:int preg_match (string $pattern, string $content [, array $matches]) preg_match ()函数在...
PHP 正则表达式常用函数,php正则表达式函数_PHP教程

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

1

2026.02.24

Golang 性能优化专题:提升应用效率
Golang 性能优化专题:提升应用效率

《Golang 性能优化专题》聚焦 Go 应用在高并发与大规模服务中的性能问题,从 profiling、内存分配、Goroutine 调度、GC 机制到 I/O 与锁竞争逐层分析。结合真实案例讲解定位瓶颈的方法与优化策略,帮助开发者建立系统化性能调优思维,在保证代码可维护性的同时显著提升服务吞吐与稳定性。

2

2026.02.24

Golang 面试题精选:高频问题与解答
Golang 面试题精选:高频问题与解答

Golang 面试题精选》系统整理企业常见 Go 技术面试问题,覆盖语言基础、并发模型、内存与调度机制、网络编程、工程实践与性能优化等核心知识点。每道题不仅给出答案,还拆解背后的设计原理与考察思路,帮助读者建立完整知识结构,在面试与实际开发中都能更从容应对复杂问题。

1

2026.02.24

Golang 运行与部署实战:从本地到云端
Golang 运行与部署实战:从本地到云端

《Golang 运行与部署实战》围绕 Go 应用从开发完成到稳定上线的完整流程展开,系统讲解编译构建、环境配置、日志与配置管理、容器化部署以及常见运维问题处理。结合真实项目场景,拆解自动化构建与持续部署思路,帮助开发者建立可靠的发布流程,提升服务稳定性与可维护性。

3

2026.02.24

Golang 疑难杂症解决指南:常见问题排查与优化
Golang 疑难杂症解决指南:常见问题排查与优化

《Golang 疑难杂症解决指南》聚焦开发过程中常见却棘手的问题,从并发模型、内存管理、性能瓶颈到工程化实践逐步拆解。通过真实案例与调试思路,帮助开发者定位问题根因,建立系统化排查方法。不只给出答案,更强调分析路径与工具使用,让你在复杂 Go 项目中具备持续解决问题的能力。

1

2026.02.24

Golang 入门学习路线:从零基础到上手开发
Golang 入门学习路线:从零基础到上手开发

Golang 入门路线涵盖从零到上手的核心路径:首先打牢基础语法与切片等底层机制;随后攻克 Go 的灵魂——接口设计与 Goroutine 并发模型;接着通过 Gin 框架与 GORM 深入 Web 开发实战;最后在微服务与云原生工具开发中进阶,旨在培养具备高性能并发处理能力的后端工程师。

0

2026.02.24

中国研究生招生信息网官方网站入口 研招网网页版在线入口
中国研究生招生信息网官方网站入口 研招网网页版在线入口

中国研究生招生信息网入口(https://yz.chsi.com.cn) 此网站是研究生报名入口的唯一官方网站

95

2026.02.24

苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法
苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法

本专题汇总苹果官网最新可用入口及中国站点访问方式,涵盖官网直达链接、iPhone官方页面查看方法与常见访问说明,帮助用户快速进入苹果官方网站,便捷了解产品信息与官方服务。

14

2026.02.24

Asianfanfics官网入口与访问指南_AFF官方平台最新登录地址
Asianfanfics官网入口与访问指南_AFF官方平台最新登录地址

本专题系统整理Asianfanfics(AFF)官方网站最新可用入口,涵盖官方平台最新直达地址、官网登录方式及中文访问指引,帮助用户快速、安全地进入AFF平台浏览与使用相关内容。

15

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.4万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号