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

目录
相关文章
|
30天前
|
PHP 数据安全/隐私保护
PHP中的面向对象编程思想及应用
在当今互联网技术飞速发展的背景下,PHP作为一种广泛应用的服务器端脚本语言,其面向对象编程思想日益受到重视。本文将深入探讨PHP中的面向对象编程特点、优势以及实际应用,帮助读者更好地理解和运用面向对象编程思想。
|
3月前
|
Serverless PyTorch 算法框架/工具
Serverless应用引擎部署问题之下个节点不可用如何解决
Serverless部署是指将应用程序部署到无服务器架构中,该架构允许开发者专注于代码而无需关心底层服务器的运行和维护;针对Serverless部署过程中可能遇到的挑战,本合集提供全面的指南和最佳实践,帮助开发者顺利实现应用的无服务器化部署。
366 2
|
23天前
|
PHP
PHP 7.4的新特性及实践应用
【4月更文挑战第2天】本文主要介绍了PHP 7.4的新特性,并通过实例代码展示了如何在实际项目中应用这些新特性。文章首先简要回顾了PHP的发展历史,然后详细分析了PHP 7.4的新特性,包括预加载、数组解构、扩展的返回类型声明等。接下来,通过实际代码示例,演示了如何在项目中使用这些新特性。最后,总结了PHP 7.4新特性的优势和局限性,并展望了PHP未来的发展趋势。
|
1月前
|
安全 大数据 编译器
深入理解PHP 8.0的新特性及实践应用
【2月更文挑战第30天】随着PHP 8.0的发布,这一流行的服务器端脚本语言带来了许多令人兴奋的新特性和性能改进。本文将深入探讨PHP 8.0的关键新特性,包括JIT编译器、联合类型、名称参数、匹配表达式等,并通过实际代码示例展示如何利用这些新工具来编写更加高效、简洁和健壮的应用程序。无论您是PHP开发者还是对最新技术趋势感兴趣的技术爱好者,本文都将为您提供宝贵的信息和启发。
21 3
|
2月前
|
数据格式 Python
Python中的正则表达式:基础与应用
Python中的正则表达式:基础与应用
|
3月前
|
监控 安全 前端开发
PHP医院安全不良事件报告管理系统项目源码
不良事件上报系统,对患者安全(不良)事件实施全过程追踪管理,包括数据上报、流转审批、数据统计、原因分析、措施制定、效果追踪等环节,管理过程设置权限分级,相关人员职责明确,通过闭环管理使不良事件得到有效解决。 包含10大类医疗安全(不良)事件,即医疗事件、药品事件、护理事件、医学技术检查事件、输血事件、医院感染事件、医疗器械事件、安全管理与意外伤害事件,进一步又细分为60余类二级事件,全面覆盖医院所有临床科室、辅助科室及职能部门,从而消灭医疗安全(不良)事件管理的“盲区”。
33 1
|
3月前
|
机器学习/深度学习 Rust JavaScript
Rust 笔记:Rust 语言中应用正则表达式
Rust 笔记:Rust 语言中应用正则表达式
162 1
|
3月前
|
安全 数据库连接 PHP
php网上书城|基于PHP实现网上书店商城藉项目(二)
php网上书城|基于PHP实现网上书店商城藉项目
|
3月前
|
关系型数据库 MySQL PHP
php网上书城|基于PHP实现网上书店商城藉项目(一)
php网上书城|基于PHP实现网上书店商城藉项目
|
3月前
|
安全 关系型数据库 PHP
网上书城|基于PHP实现网上书店商城藉项目
网上书城|基于PHP实现网上书店商城藉项目