PHP數組與字符串
一、使用循環將用戶輸入的5個數進行由小到大的排序。
<?php
echo "請輸入需要排序的數據:<br>";
echo "<form method='post'>";
for ($i=1; $i < 6; $i++) {
//文本框的名字是數組名
echo "<input type='text' name='stu[]' size='5'>";
if ($i < 5) {
echo "-";
}
}
echo "<input type='submit' name='bt' value='提交'>";
echo "</form>";
if (isset($_POST['bt'])) {
$temp = 0;
$stu = $_POST['stu'];
$num = count($stu);
echo "您輸入的數據有:<br>";
foreach ($stu as $score) {
echo $score."<br>";
}
/*for ($i=0; $i < $num; $i++) {
for ($j=$i+1; $j < $num; $j++) {
if ($stu[$i] > $stu[$j]) {
$temp = $stu[$i];
$stu[$i] = $stu[$j];
$stu[$j] = $temp;
}
}
}*/
sort($stu);
echo "排序後的數據如下所示:<br>";
foreach ($stu as $key => $value) {
echo $value."<br>";
}
}
?>
二、由用戶輸入5個學生的學號,如果有相同的學號則只保留一個,找到前綴爲
1811
的改爲1810
,最後將所有學號輸出,以逗號‘,’爲分隔符。
<?php
echo "請輸入學號:<br>";
echo "<form method='post'>";
for ($i=1; $i < 6; $i++) {
//文本框的名字是數組名
echo "<input type='text' name='stu[]' size='5'>";
if ($i < 5) {
echo "-";
}
}
echo "<input type='submit' name='bt' value='提交'>";
echo "</form>";
if (isset($_POST['bt'])) {
$k = 0;
$jsj = array();
$stu = $_POST['stu'];
//print_r($stu);
for ($i=0; $i < count($stu); $i++) {
for ($j=$i+1; $j < count($stu); $j++) {
if (strcmp($stu[$i], $stu[$j]) == 0) {
array_splice($stu, $j, 1); //將數組中重複的值刪除
}
}
}
$str = implode(",", $stu); //使用逗號作爲連接符將數組轉換爲字符串
echo "所有的學生學號如下:<br>";
echo $str."<br>";
foreach ($stu as $value) {
if (strstr($value, "1811")) { //查找包含1811的學號
$string = str_replace("1811", "1810", $value);
$jsj[$k] = $string; //將修改的後的學號賦值給數組
$k++;
}
}
echo "計算機專業的學號如下:<br>";
echo implode(",", $jsj);
}
?>
三、使用正則表達式驗證表單數據的正確性,表單中包含用戶名、密碼、出生日期、郵箱。要求用戶名爲6-12個字符,密碼爲6-20個數字,出生日期爲有效日期,郵箱地址爲有效的郵件地址。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>註冊頁面</title>
<style>
.STYLE1 {
font-size: 14px;
color: red;
}
div {
text-align: center;
font-size: 24px;
color: #0000FF;
}
table {
margin: 0 auto;
}
</style>
</head>
<body>
<form action="" name="fr1" method="post">
<div>用戶註冊</div>
<table border="1" width="480">
<tr>
<td width="80">用戶名:</td>
<td><input type="text" name="ID"></td>
<td class="STYLE1">*6~12個字符(數字,字母和下劃線)</td>
</tr>
<tr>
<td>密碼:</td>
<td><input type="password" name="PWD" size="21"></td>
<td class="STYLE1">*6~20個數字</td>
</tr>
<tr>
<td>出生日期:</td>
<td><input type="text" name="BIRTHDAY"></td>
<td class="STYLE1">*有效的日期</td>
</tr>
<tr>
<td>郵箱:</td>
<td><input type="text" name="EMAIL"></td>
<td class="STYLE1">*有效的郵件地址</td>
</tr>
<tr>
<td colspan="3" align="center">
<input type="submit" name="GO" value="註冊">
<input type="reset" name="NO" value="取消">
</td>
</tr>
</table>
</form>
</body>
</html>
<?php
if (isset($_POST['GO'])) {
$id = $_POST['ID'];
$pwd = $_POST['PWD'];
$birthday = $_POST['BIRTHDAY'];
$Email = $_POST['EMAIL'];
$checkid = preg_match('#^\w{6,12}$#', $id); //檢查是否爲6~12個字符
$checkpwd = preg_match('#^\d{6,20}$#', $pwd); //檢查是否爲6~20個數字
$checkbirthday = preg_match('#^\d{4}-(0?\d|1?[012])-(0?\d|[12]\d|3[01])$#', $birthday); //檢查是否是有效日期
$checkEmail = preg_match('#^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-\.]+$#', $Email); //檢查郵件地址的合法性
if (!$checkid) {
echo "<script>alert('用戶名格式錯誤!');</script>";
}
elseif (!$checkpwd) {
echo "<script>alert('密碼格式錯誤!');</script>";
}
elseif (!$checkbirthday) {
echo "<script>alert('出生日期格式錯誤!');</script>";
}
elseif (!$checkEmail) {
echo "<script>alert('E-mail格式錯誤!');</script>";
}
else {
echo "註冊成功!";
}
}
?>
四、接收用戶輸入的學生學號、姓名、成績等信息,將接收到的信息存入數組並按照成績升序排序。之後再以表格形式輸出,如果存在學號爲1的學生,則輸出其姓名與成績。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>處理表格數據</title>
<style>
table, div, td {
text-align: center;
}
table {
margin: 0 auto;
}
p {
font-size: 18px;
color: #FF0000;
}
</style>
</head>
<body>
<form action="" name="fr1" method="post">
<table border="1">
<tr>
<td>
<div>學號</div>
</td>
<td>
<div>姓名</div>
</td>
<td>
<div>成績</div>
</td>
</tr>
<?php
for ($i=0; $i < 5; $i++) {
echo "<tr><td><input type='text' name='XH[]'></td>
<td><input type='text' name='XM[]'></td>
<td><input type='text' name='CJ[]'></td>
</tr>";
}
?>
<tr>
<td colspan="3">
<input type="submit" name="bt_stu" value="提交">
</td>
</tr>
</table>
</form>
<p align="center">注意:學號值不能重複</p><br>
<?php
if (isset($_POST['bt_stu'])) {
// $XH = $_POST['XH'];
// $XM = $_POST['XM'];
// $CJ = $_POST['CJ'];
/**
* print_r($_POST);
* Array ( [XH] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
* [XM] => Array ( [0] => a [1] => b [2] => c [3] => d [4] => e )
* [CJ] => Array ( [0] => 78 [1] => 56 [2] => 86 [3] => 49 [4] => 83 )
* [bt_stu] => 提交 )
*/
foreach ($_POST as $key => $value) {
$$key=$value; //使用PHP中的可變變量$$
/**
* $key=XH;
* $value=Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 );
* 即$value=[];
* $$key=$value;
* 即$$key=[];
* 則:$XH=[];
*/
}
array_multisort($CJ, $XH, $XM);
for ($i=0; $i < count($XH); $i++) {
$sum[$i] = array($XH[$i], $XM[$i], $CJ[$i]);
}
echo "<div>排序後成績如下:</div>";
echo "<table border='2'><tr><td>學號</td><td>姓名</td><td>成績</td></tr>";
foreach ($sum as $value) {
list($stu_number, $stu_name, $stu_score)=$value;
echo "<tr><td>$stu_number</td><td>$stu_name</td><td>$stu_score</td></tr>";
}
echo "</table><br>";
reset($sum);
foreach ($sum as $key => $value) {
list($stu_number, $stu_name, $stu_score) = $value;
if ($stu_number == '1') {
echo "<p align=center>";
echo $stu_number."的姓名爲:".$stu_name;
echo "成績爲:".$stu_score;
break;
}
}
}
?>
</body>
</html>
五、新建一個留言簿,留言簿上有E-mail地址和用戶的留言,提取客戶的E-mail地址和留言,要求E-mail地址中@符號前不能有點“.”或逗號“,”。將E-mail地址中@符號前的內容作爲用戶的用戶名,並將用戶留言中第一人稱“我”修改爲“本人”。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
p {
font-family: "方正舒體";
font-size: 18px;
}
div {
font-family: "黑體";
font-size: 18px;
}
</style>
</head>
<body>
<form action="" name="f1" method="post">
<p>
您的E-mail地址:<br>
<input type="email" name="Email" size="31"><br>
您的留言:<br>
<textarea name="note" cols="30" rows="10"></textarea>
<br>
<input type="submit" name="bt1" value="提交">
<input type="reset" name="bt2" value="清空">
</p>
</form>
<?php
if (isset($_POST['bt1'])) {
$Email=$_POST['Email']; //接受E-mail地址
$note=$_POST['note']; //接受留言
if (!$Email || !$note) {
echo "<script>alert('E-mail地址和留言請填寫完整!');</script>";
}
else {
$array=explode("@", $Email);
if (count($array) != 2) {
echo "<script>alert('E-mail地址格式錯誤!');</script>";
}
else {
$username=$array[0]; //取得@符號前的內容
$netname=$array[1]; //取得@符號後的內容
//如果username中含有"."或","則報錯
if (strstr($username, ".") or strstr($username, ",")) {
echo "<script>alert('E-mail地址格式錯誤!');</script>";
}
else {
$str1 = htmlspecialchars("<");
$str2 = htmlspecialchars(">");
//先將留言都轉換爲HTML實體,不進行解析。
$note = htmlspecialchars($note); //防止XSS攻擊
//將留言中的“我”用“本人”替代
$newnote = str_replace("我", "本人", $note);
echo "<div>";
echo "用戶".$str1.$username.$str2."您好! ";
echo "您是".$netname."網友!<br>";
echo "<br>您的留言是:<br> ".$newnote."<br>";
echo "</div>";
}
}
}
}
?>
</body>
</html>
創作不易,喜歡的話加個關注點個贊,謝謝謝謝