实训项目:PHP正则表达式的应用

简介: 正则表达式是一种描述字符串结构的语法规则,是一种特定的格式化模式,用于验证各种字符串是否匹配(Match)这个特征,进而实现高级的文本查找、替换、截取等操作。正则表达式在发展过程中出现了多种形式,一种是POSIX规范兼容的表达式,另一种是当Perl(一种功能丰富的编程语言)发展起来后,衍生出来的PCRE(Perl兼容正则表达式)库,使得许多开发人员将PCRE整合到自己的语言中,PHP中也未PCRE库的使用提供了相应的函数。

实训要求

新建一个网页,请输入您本人的个人信息留言(同学们在调试程序时请输入您自己的姓名,QQ邮箱等具体信息),为了避免用户泄露个人信息,程序对所输入的留言信息中的所有数字都替换为“***”。数字包括阿拉伯数字及中文数字,以及小数点。当用户单击“提交”按钮后,在网页下部显示出过滤之后的效果,如图所示。

image.png

php代码

<!DOCTYPE html><html><head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/><style>/* 背景可以不要 *//*body    {        background: url(./fb163613ca66653a9778fffc11e524e.jpg);    }*/.box1    {
position: relative;
width: 31.25rem;
height:25rem;
border: 0.625remdouble#000;
margin: 0auto;
top: 6.25rem;
box-shadow: 0.625rem0.625rem1.25rem0.3125remrgb(49, 49, 49);
    }
h1,p,.box_button    {
text-align: center;
    }
.box_button    {
/* width: 200px;        border: 1px solid; */margin: 0auto;
    }
textarea    {
resize:none;
    }
.box2  {
position: absolute;   
top: 31.25rem;
left: -5.75rem;
width: 42.5rem;
height: 22.75rem;
margin: 0auto;
border: 0.625remdouble#000;
  }
.box2b  {
margin-left: 2.25rem;
  }
.box_bottom  {
position: absolute;
margin: 0auto;
/* top: -10.25rem; */  }
</style></head><body><divclass="box_bottom"style="color:#363636;font-weight: bolder;font-family: Courier New">© <spanstyle="letter-spacing: 1.5px;font-size: 1.6rem;">2022 GHW・WebSite</span></div><divclass="box1"><h1>留言板</h1><formaction=""name="f1"id="f1"method="post"><p>请输你的留言:</p><p><textareaname="t1"id="t1"cols="60"rows="10"></textarea></p><divclass="box_button"><inputtype="submit"name="send"id="send"style="margin-right: 50px;"><inputtype="reset"name="send"id="send"></div></form><divclass="box2"><h1>留言记录...</h1><?php$msg=@$_REQUEST['t1'];  // $reg='/(\d+)/';         //搞定身高、学号// $reg='/\d+(\.\d)?/';    //搞定小数点// $reg='/\d+(\.\d+)?/';    //搞定小数点// $reg='/[\.*]/';         //搞定英文句号.// $reg='/(零|一|二|两|三|四|五|六|七|八|九|十)(百|十|零)?(一|二|两|三|四|五|六|七|八|九)?(百|十|零)?(一|二|两|三|四|五|六|七|八|九)?/';       //搞定中文数字 呵呵...// $reg='/((0|[1-9]\d*)(\.\d+)?)|(一|二|两|三|四|五|六|七|八|九)?(万|千|百|十|零)?/';//然后合体!!!//正则表达式真不想学(弱爆〒▽〒$reg = '/((0|[1-9]\d*)(\.\d+)?)|(\.\d*)|[\.*]|(零|一|二|两|三|四|五|六|七|八|九|十)(百|十|零)?(一|二|两|三|四|五|六|七|八|九)?(百|十|零)?(一|二|两|三|四|五|六|七|八|九)?/';if(isset($_REQUEST['send'])){if($msg==''){echo '<b>'.'请输入留言'.'</b>';}$jm=preg_replace($reg,"***",$msg);echo '<b>'.$jm.'</b>';}?></div></div></body></html>

实现效果

输入留言

image.png

点击提交

image.png

知识点解析

正则表达式:

正则表达式是一种描述字符串结构的语法规则,是一种特定的格式化模式,用于验证各种字符串是否匹配(Match)这个特征,进而实现高级的文本查找、替换、截取等操作。

正则表达式在发展过程中出现了多种形式,一种是POSIX规范兼容的表达式,另一种是当Perl(一种功能丰富的编程语言)发展起来后,衍生出来的PCRE(Perl兼容正则表达式)库,使得许多开发人员将PCRE整合到自己的语言中,PHP中也未PCRE库的使用提供了相应的函数。

(什么是正则表达式?点击正则表达式进行详细学习)

本次实训,要求对所输入的留言信息中的所有数字都替换为“***”。数字包括阿拉伯数字及中文数字,以及小数点。

核心代码为:

$reg = '/((0|[1-9]\d*)(\.\d+)?)|(\.\d*)|[\.*]|(零|一|二|两|三|四|五|六|七|八|九|十)(百|十|零)?(一|二|两|三|四|五|六|七|八|九)?(百|十|零)?(一|二|两|三|四|五|六|七|八|九)?/';

针对正则表达式匹配所有数字,包括中文数字,以及小数点。我们可以分步来实现匹配。

image.png

知识点涉及:

1.选择符

若要查找的条件有多个,只要其中一个满足即可成立时,可以使用选择符“|”。该字符可以理  解为“或”。

2.字符范围

在正则表达式中,对于匹配某个范围内的字符,可以用中括号“[]”和连字符“-”来实现。且在中括号中还可以用反义字符“^,表示匹配不在指定字符范围内的字符。

3.点字符和限定符

字符“.”用于匹配一个任意字符,限定符(?、+、*、{})用于匹配某个字符连续出现的次数。

image.gif编辑

4.括号字符

在正则表达式中,括号字符“()”有两个作用:一是改变限定符的作用范围;二是分组。

(1)改变限定符的作用范围

①改变作用范围前

正则表达式:firm|sh

可匹配的结果:firm、sh

②改变作用范围后

正则表达式:fi(rm|sh)

可匹配的结果:firm、fish

(2)分组

①分组前

正则表达式:bana{2}

可匹配的结果:banaa

②分组后

正则表达式:ba(na){2}

可匹配的结果:banana

5.preg_replace()函数

功能:通过正则表达式完成字符串的搜索和替换

语法:mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )preg_replace()函数首先会搜索第3个参数中符合第1个参数正则规则的内容,然后使用第2个参数进行替换。其中,第3个参数的数据类型决定着返回值的类型。

目录
相关文章
|
1月前
|
设计模式 PHP
PHP中的设计模式:单一职责原则在软件开发中的应用
【10月更文挑战第8天】 在软件开发中,设计模式是解决常见问题的经验总结,而单一职责原则作为面向对象设计的基本原则之一,强调一个类应该只有一个引起变化的原因。本文将探讨单一职责原则在PHP中的应用,通过实际代码示例展示如何运用该原则来提高代码的可维护性和可扩展性。
33 1
|
7天前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
|
7天前
|
存储 PHP
在PHP中,正则表达式
在PHP中,正则表达式
19 5
|
11天前
|
IDE PHP 开发工具
【PHP开发专栏】Xdebug在PHP调试中的应用
Xdebug 是一个功能强大的 PHP 扩展,提供调试、代码分析和性能分析等功能。本文介绍了 Xdebug 的基本概念、安装配置方法及在 PHP 调试中的应用技巧,包括断点调试、堆栈跟踪、远程调试和性能分析等。通过合理使用 Xdebug,可以显著提高调试效率和代码质量。
26 3
|
13天前
|
安全 编译器 PHP
PHP 8新特性解析与实践应用####
————探索PHP 8的创新功能及其在现代Web开发中的实际应用
|
16天前
|
存储 Kotlin
正则表达式在Kotlin中的应用:提取图片链接
正则表达式在Kotlin中的应用:提取图片链接
|
18天前
|
测试技术 持续交付 PHP
PHP在Web开发中的应用与最佳实践###
【10月更文挑战第25天】 本文将深入探讨PHP在现代Web开发中的应用及其优势,并分享一些最佳实践来帮助开发者更有效地使用PHP。无论是初学者还是有经验的开发者,都能从中受益。 ###
39 1
|
20天前
|
设计模式 存储 数据库连接
PHP中的设计模式:单例模式的深入理解与应用
【10月更文挑战第22天】 在软件开发中,设计模式是解决特定问题的通用解决方案。本文将通过通俗易懂的语言和实例,深入探讨PHP中单例模式的概念、实现方法及其在实际开发中的应用,帮助读者更好地理解和运用这一重要的设计模式。
15 1
|
28天前
|
前端开发 安全 关系型数据库
PHP在Web开发中的应用及其优势###
【10月更文挑战第16天】 — 本文探讨了PHP在现代Web开发中的广泛应用及其显著优势。通过分析PHP的核心特性,如灵活性、易用性和广泛的应用支持,阐述了为何PHP成为众多开发者和公司的首选技术。文章还介绍了PHP与其他编程语言的比较,并展望了其未来的发展趋势。 ###
40 2
|
1月前
|
设计模式 PHP 开发者
PHP中的设计模式:桥接模式的解析与应用
在软件开发的浩瀚海洋中,设计模式如同灯塔一般,为开发者们指引方向。本文将深入探讨PHP中的一种重要设计模式——桥接模式。桥接模式巧妙地将抽象与实现分离,通过封装一个抽象的接口,使得实现和抽象可以独立变化。本文将阐述桥接模式的定义、结构、优缺点及其应用场景,并通过具体的PHP示例代码展示如何在实际项目中灵活运用这一设计模式。让我们一起走进桥接模式的世界,感受它的魅力所在。