实训项目: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个参数的数据类型决定着返回值的类型。

目录
相关文章
|
2月前
|
PHP 开发工具 开发者
Xdebug在PHP中的应用
Xdebug 是一款非常实用的 PHP 调试工具,它为开发者提供了丰富的功能和便利,帮助开发者更高效地进行调试工作。熟练掌握 Xdebug 的使用方法,对于提高 PHP 开发质量和效率具有重要意义。
48 1
|
2月前
|
PHP 开发者 UED
PHP中的异常处理:理解与应用
在编程的世界中,错误和异常就像是不请自来的客人——总是在你最不希望它们出现的时候敲门。对于PHP开发者来说,学会优雅地处理这些“不速之客”是提升代码质量和用户体验的关键。本文将带你深入理解PHP中的异常处理机制,通过实际的代码示例,展示如何捕获、处理以及自定义异常,让你的应用程序更加健壮和灵活。准备好迎接挑战,让我们共同探索PHP异常处理的奥秘吧!
103 66
|
2月前
|
编译器 PHP 开发者
PHP 8新特性解析与实战应用####
随着PHP 8的发布,这一经典编程语言迎来了诸多令人瞩目的新特性和性能优化。本文将深入探讨PHP 8中的几个关键新功能,包括命名参数、JIT编译器、新的字符串处理函数以及错误处理改进等。通过实际代码示例,展示如何在现有项目中有效利用这些新特性来提升代码的可读性、维护性和执行效率。无论你是PHP新手还是经验丰富的开发者,本文都将为你提供实用的技术洞察和最佳实践指导。 ####
34 1
|
2月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
46 5
|
2月前
|
SQL 安全 数据挖掘
PHP表单的多方面应用与实践
通过本文的介绍,我们详细探讨了PHP表单的多方面应用与实践。从表单创建、数据验证、安全性、文件上传到多步表单处理,每个方面都有具体的示例和说明。通过掌握这些技术,开发者可以有效地处理表单数据,确保应用的安全性和可靠性。希望本文能为您在PHP开发中提供有价值的参考和指导。
34 2
|
2月前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
|
2月前
|
存储 PHP
在PHP中,正则表达式
在PHP中,正则表达式
35 5
|
2月前
|
IDE PHP 开发工具
【PHP开发专栏】Xdebug在PHP调试中的应用
Xdebug 是一个功能强大的 PHP 扩展,提供调试、代码分析和性能分析等功能。本文介绍了 Xdebug 的基本概念、安装配置方法及在 PHP 调试中的应用技巧,包括断点调试、堆栈跟踪、远程调试和性能分析等。通过合理使用 Xdebug,可以显著提高调试效率和代码质量。
50 3
|
2月前
|
安全 编译器 PHP
PHP 8新特性解析与实践应用####
————探索PHP 8的创新功能及其在现代Web开发中的实际应用
|
2月前
|
存储 Kotlin
正则表达式在Kotlin中的应用:提取图片链接
正则表达式在Kotlin中的应用:提取图片链接