上部分:PHP从入门到能用(八 · 上)正则表达式的字符串练习【10大题训练——做完就学会】
preg_match 执行匹配正则表达式
preg_replace 执行一个正则表达式搜索和替换,返回值为替换后的字符串
preg_split 通过一个正则表达式分隔字符串
preg_grep 返回匹配模式的数组条目
preg_quote 转义正则表达式字符,返回为转义后的字符串
如果 $str=“轻轻的我走了[逗]正如我轻轻地来[句]我挥一挥衣袖[逗]不带走一片云彩 [句]”,完成下面要求:
1) 将$str 中的“[ ]”分别用“( )”代替;
2) 将$str 中的“[逗]”用“,”代替,“[句]”用“。”代替;
1)解 >>>
$str = "轻轻的我走了[逗]正如我轻轻地来[句]我挥一挥衣袖[逗]不带走一片云彩 [句]";
$str = preg_replace('/\[/', '(', $str);
echo preg_replace('/\]/', ')', $str);
$str = '轻轻的我走了(逗)正如我轻轻地来(句)我挥一挥衣袖(逗)不带走一片云彩 (句)';
$str = preg_replace('/(逗)/', ',', $str);
echo preg_replace('/(句)/','。',$str);
$str=“See What information we have on the PHP coding.cn and sharing your knowledge”
要求:
1) 将此字符串的每个单词开头的字母改写成大写;
2)以空格为分界点,将其转化为数组;然后将此数组再转化为字符串,格式为“ See-What-information-we-have-on-the-PHP-coding-cn-and-sharing-your-know ledge”;
1)解 >>>
$str = "See What information we have on the PHP coding.cn and sharing your knowledge";
$str =ucwords($str);
echo $str;
$str = "See What information we have on the PHP coding.cn and sharing your knowledge";
$str=explode(' ',$str);
echo implode('-',$str);
创建一网页,在网页上可以显示 5 个文本框,其中每个文本框的宽度为 10 个字符,最多可输入的字符个数也为 10,当点击提交按钮后,可以显示所有学生的学号(注意:每个学生的学号之间以“,”分割,且如果输入相同的学号只显示 1 遍),然后找到 10 级计算机信息管理管理专业的学生(前缀为 1082030),将其前缀改为“10 信管”,并将他们的学号输出。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
input{
float:left;
width:100px
}
span{
display:block;
float:left;
}
.text{
width:fit-content;
}
</style>
</head>
<body>
<form action="" method="get">
<h4>请输入学号</h4>
<input type="number" oninput="if(value.length>10)value=value.slice(0,10)" name='k[0]'><span>-</span>
<input type="number" oninput="if(value.length>10)value=value.slice(0,10)" name='k[1]'><span>-</span>
<input type="number" oninput="if(value.length>10)value=value.slice(0,10)" name='k[2]'><span>-</span>
<input type="number" oninput="if(value.length>10)value=value.slice(0,10)" name='k[3]'><span>-</span>
<input type="number" oninput="if(value.length>10)value=value.slice(0,10)" name='k[4]'><span>-</span>
<button type="submit">提交</button>
</form>
<br>
<div class='text'>
</div>
$kok = $_GET['k'];
$str = '';
$arr = [];
$i = 0;
echo "所有的学生学号如下:
";
$str = implode(',', $kok);
echo "$str
";
foreach ($kok as $k => $val) {
if (substr($val, 2, 2) == 82) {
$arr[$i] = "10信管" . substr($val, 7, 3);
$i++;
}
}
$arr = implode(',', $arr);
echo "10级计算机信息管理专业的同学有:
";
echo "$arr
";
?>
</body>
</html>
使用正则表达式函数 preg_match (),编写代码,判断字符串“oh,my love”里是否含 有“love”如果是,则输出“匹配成功”,否则,输出“匹配失败”。
$str = 'oh,my love';
if(preg_match('/love/',$str)){
echo "匹配成功";
}else{
echo "匹配失败";
}
使用正则表达式函数 preg_match (),编写代码,验证 18 位身份证,要求第一位不能为0,从第 7 位到 14 位为出生日期,最后一位为数字、X 或 Y。
$str = '51010419900307397X';
echo "需要匹配的身份证号为: ".$str."
";
if (preg_match('/^([1-9]{1})([0-9]{5})([1-9]{1}[0-9]{3})([0-1]+[0-9]+)([0-3]+[0-9]+)[\d|Xx|Yy]$/', $str)) {
echo "匹配成功";
} else {
echo "匹配失败";
}
使用正则表达式函数 preg_match_all();编写代码,实现此功能:查找字符串“PHP is a language,PHP is a web language,PHP”中 PHP 出现的次数,并以数组的形式输出。如果不存在,则输出”PHP was not found”。
$str = 'PHP is a language,PHP is a web language,PHP';
preg_match_all('/PHP/', $str, $res);
if (count($res[0])<=0) {
echo "PHP was not found";
} else {
print_r($res);
}
使用正则表达式函数 preg_replace();编写代码,实现此功能:将字符串”The quick brown fox jumped over the lazy dog” 中 的 ” quick”,”brown”,”fox” 分 别 替 换 为 ” bear”,”black”,”slow”,并输出。
$str = 'The quick brown fox jumped over the lazy dog';
$str = preg_replace('/quick/', 'bear', $str);
$str = preg_replace('/brown/', 'black', $str);
echo preg_replace('/fox/', 'slow', $str);
$str='PHP is a web language';
print_r(preg_split('/\s/',$str));
制作一注册页面如图所示,然后验证表单数据的正确性,每一项数据的验证要求如图所示,如果不符合要求分别给出提示,完全符合要求后可以成功注册。
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
table{
margin:50px auto;
text-align:left;
}
table tr{
height:24px;
}
table th{
text-align:center;
height:28px;
}
input{
line-height:24px;
border:1px solid red;
}
button{
float:left;
cursor:pointer;
border:1px solid blue;
}
style>
head>
<body>
<form action="./z8-9b.php" method="post">
<table border='1'>
<tr><th colspan="3">用户注册th>tr>
<tr><td>用户名:td><td><input name="name"/>td><td>* 6~12个字符(数字,字母和下划线)td>tr>
<tr><td>密码:td><td><input name="passwd1"/>td><td>* 6~16个数字td>tr>
<tr><td>确认密码:td><td><input name="passwd2"/>td><td>* 必须和密码一致td>tr>
<tr><td>出生日期:td><td><input name="date"/>td><td>* 有效的日期,格式为 “1998-09-10” 样式td>tr>
<tr><td>手机:td><td><input name="phone"/>td><td>* 11位数字,第一位为1td>tr>
<tr><td>邮箱:td><td><input name="inbox"/>td><td>* 有效的邮件地址td>tr>
<tr><td colspan="2" style="border:none;"><button type="submit" style="float:right">注册button>td><td style="border:none;text-align:center;"><button type="submit" style="margin-left:44px;">取消button>td>tr>
table>
form>
body>
html>
z8-9b.php 文件代码
$name = $_POST['name'];
$passwd1 = $_POST['passwd1'];
$passwd2 = $_POST['passwd2'];
$date = $_POST['date'];
$phone = $_POST['phone'];
$inbox = $_POST['inbox'];
//计数值
$count=0;
// 6~12个字符(数字,字母和下划线)
if(!preg_match('/^[0-9a-zA-Z_]{6,12}$/',$name)){
echo "用户名格式错误,请输入 6~12个字符(数字,字母和下划线)的用户名
";
$count++;
}
// 6~16个数字
if(!preg_match('/^\d{6,16}$/',$passwd1)){
echo "密码错误,密码不足6-16位数或者密码不是数字
";
$count++;
}else if($passwd1!=$passwd2){
echo "密码不一致";
$count++;
}
// 有效的日期,格式为 “1998-09-10” 样式
if(!preg_match('/^[0-9]{4}\-[0-9]{2}\-([0-9]{2})$/',$date)){
echo "请输入有效的日期,格式为 “1998-09-10” 样式
";
$count++;
}
// 11位数字,第一位为1
if(!preg_match('/^1[3456789]\d{9}$/',$phone)){
echo "请输入11位数字,第一位为1
";
$count++;
}
// 有效的邮件地址
if(!preg_match('/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/',$inbox)){
echo "请输入有效的邮件地址
";
$count++;
}
if($count==0){
echo "";
}
?>
?>
创建一登陆页面如图所示,然后在动态页面中进行如下操作:判断你目前的登陆时间, 当你登录的时间为 6:00-12:00 则显示“XXX,上午好!”,12:00-13:00 显示“XXX,中 午好!”,13:00-18:00 显示“XXX,下午好!”,18:00-22:00 显示“XXX,晚上好!”,22: 00-24:00 显示“XXX,深夜好!”,24:00-6:00 显示“XXX,凌晨好!”
z8-10a.php代码
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
<form action="./z8-10b.php">
用户名:<input type="text" name="username" id=""><br/><br/>
密 码:<input type="passwd" name="userpwd" id=""><br/><br/>
<button type="submit">提交button>
<button type="reset">重置button>
form>
body>
html>
z8-10b.php代码
$username = $_POST['username'];
$userpwd = $_POST['userpwd'];
echo "$username";
//设置时区的方法;
date_default_timezone_set('prc');
//这样便能获取准确的时间了;
$valDate = date('H:i', time());
$judgeDate = (int) explode(":", $valDate)[0];
if ($judgeDate >= 6 && $judgeDate < 12) {
echo ",上午好!";
} else if ($judgeDate >= 12 && $judgeDate < 13) {
echo ",中午好!";
} else if ($judgeDate >= 13 && $judgeDate < 18) {
echo ",晚上好!";
} else if ($judgeDate >= 18 && $judgeDate < 24) {
echo ",深夜好!";
} else {
echo ",凌晨好!";
}