实训要求
新建一个网页,请输入您本人的个人信息留言(同学们在调试程序时请输入您自己的姓名,QQ邮箱等具体信息),为了避免用户泄露个人信息,程序对所输入的留言信息中的所有数字都替换为“***”。数字包括阿拉伯数字及中文数字,以及小数点。当用户单击“提交”按钮后,在网页下部显示出过滤之后的效果,如图所示。
php代码
<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></div></div></body></html>
实现效果
输入留言
点击提交
知识点解析
正则表达式:
正则表达式是一种描述字符串结构的语法规则,是一种特定的格式化模式,用于验证各种字符串是否匹配(Match)这个特征,进而实现高级的文本查找、替换、截取等操作。
正则表达式在发展过程中出现了多种形式,一种是POSIX规范兼容的表达式,另一种是当Perl(一种功能丰富的编程语言)发展起来后,衍生出来的PCRE(Perl兼容正则表达式)库,使得许多开发人员将PCRE整合到自己的语言中,PHP中也未PCRE库的使用提供了相应的函数。
(什么是正则表达式?点击正则表达式进行详细学习)
本次实训,要求对所输入的留言信息中的所有数字都替换为“***”。数字包括阿拉伯数字及中文数字,以及小数点。
核心代码为:
$reg = '/((0|[1-9]\d*)(\.\d+)?)|(\.\d*)|[\.*]|(零|一|二|两|三|四|五|六|七|八|九|十)(百|十|零)?(一|二|两|三|四|五|六|七|八|九)?(百|十|零)?(一|二|两|三|四|五|六|七|八|九)?/';
针对正则表达式匹配所有数字,包括中文数字,以及小数点。我们可以分步来实现匹配。
知识点涉及:
1.选择符
若要查找的条件有多个,只要其中一个满足即可成立时,可以使用选择符“|”。该字符可以理 解为“或”。
2.字符范围
在正则表达式中,对于匹配某个范围内的字符,可以用中括号“[]”和连字符“-”来实现。且在中括号中还可以用反义字符“^”,表示匹配不在指定字符范围内的字符。
3.点字符和限定符
点字符“.”用于匹配一个任意字符,限定符(?、+、*、{})用于匹配某个字符连续出现的次数。
编辑
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个参数的数据类型决定着返回值的类型。