PHP课堂--实验5

实验五 PHP中的文件操作

 

 

实验目的:

       掌握PHP中操作文件的方法

    掌握PHP中字符串相关函数的应用

 

实验内容:

1、学习<input type="radio">的使用方法,设计一个投票选择器:


最后显示选中的项目。

提示:

  显示样式的设计如香蕉:

<p><inputtype="radio" name="vote" id="vote"value="org" /> 桔子</p>

首先判断有没有进行投票操作,利用isset($_POST['submit'])

投票后判断有没有选择单选框,利用isset($_POST['vote'])(如果没有选中提示用户进行选择)

再通过读取$_POST['vote']的值,如果选中香蕉,则$_POST['vote']的值为banana(可以利用if或者switch结构进行处理)。

注意三个checkbox要使用相同名称vote

 

具体实现:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>实验5-1</title>
</head>

<body>
<form method="post" name="form1" action="">
	<p>您喜欢什么样的水果?请投票</p>
	<p><input type="radio" name="vote" id="vote1" value="banana" />
		<label for="vote1" >香蕉</label>
	</p>
	<p><input type="radio" name="vote" id="vote2" value="apple" />
		<label for="vote2">苹果</label>
	</p>
	<p><input type="radio" name="vote" id="vote3" value="orange" />
		<label for="vote2">桔子</label>
	</p>
	<p><input type="radio" name="vote" id="vote3" value="pear" />
		<label for="vote2">梨子</label>
	</p>
	<p><input type="submit" name="submit" id="submit" vlaue="投票" /></p>
</form>
<?php
	if(isset($_POST['submit']))
	{
		if(isset($_POST['vote']))
		{
			$vote = $_POST['vote'];
			switch($vote)
			{
				case 'banana': echo "您选择的是香蕉";break;
				case 'apple': echo "您选择的是苹果"; break;
				case 'orange': echo "您选择的是桔子"; break;
				case 'pear': echo "您选择的是梨子"; break;
				default: break;
			}
		}
		else
			echo "请选择你喜欢的水果";
	}
?>
</body>
</html>




2、根据上一题,统计投票总计数,记录在php文件所在目录中的另一个文件vote.txt中,再最后显示各个选项的投票计数值。

提示:

1)文件操作相关函数:

(1)创建文件:

if(!file_exists(“文件名”))   //进行判断,文件不存在创建文件

{

$handle=fopen(“文件”,"w+");

       fwrite($handle,"写进文件的内容");

       fclose($handle);

}

(2)读取文件内容使用 :$Str=fgets($handle);  读一行

(3)字符串拆分成数组函数 $Arry=explode("|",$Str);     //主要是前面数字字符之间以”|”间隔,拆分后的数组元素依次是Arry[0],Arryp[1]……

(4)数组合并为字符串:$str=implode("|",$Arry);

(5)更新文件操作函数fwrite($handle,写入内容);

文件操作函数对应的参数如下表所示:

 


具体实现:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>实验5-1</title>
</head>

<body>
<form method="post" name="form1" action="">
	<p>您喜欢什么样的水果?请投票</p>
	<p><input type="radio" name="vote" id="vote1" value="banana" />
		<label for="vote1" >香蕉</label>
	</p>
	<p><input type="radio" name="vote" id="vote2" value="apple" />
		<label for="vote2">苹果</label>
	</p>
	<p><input type="radio" name="vote" id="vote3" value="orange" />
		<label for="vote2">桔子</label>
	</p>
	<p><input type="radio" name="vote" id="vote3" value="pear" />
		<label for="vote2">梨子</label>
	</p>
	<p><input type="submit" name="submit" id="submit" vlaue="投票" /></p>
</form>
<?php


	if(!file_exists("vote.txt"))//判断文本文件vote.txt是否存在
	{	
		//如果不存在,则创建文件
		$handle = fopen("vote.txt", "w+");
		fwrite($handle, "0|0|0|0");	//采用|分隔
		fclose($handle);		//关闭文件流
	}
	
	if(isset($_POST['submit']))
	{
		if(isset($_POST['vote']))
		{
			$vote = $_POST['vote'];
			$handle = fopen("vote.txt", "r+");		//打开文件流
			$vstr = fgets($handle);			//读一行
			$voteArray = explode("|", $vstr);//拆分,分隔为字符串数组
			
			switch($vote)		//投票统计
			{
				case 'banana': $voteArray[0]++;break;
				case 'apple': $voteArray[1]++; break;
				case 'orange':$voteArray[2]++; break;
				case 'pear':$voteArray[3]++; break;
				default: break;
			}
			
			$voteNewArray = implode("|", $voteArray);		//合并字符串数组
			$handle = fopen("vote.txt", "w+");
			fwrite($handle, $voteNewArray);		//从新写入文件
			fclose($handle);		//关闭文件流
			
			
			echo "投票结果如下:"."<br/>";
			echo "<br/>";
			echo "香蕉:".$voteArray[0]."<br/>";
			echo "苹果:".$voteArray[1]."<br/>";
			echo "桃子:".$voteArray[2]."<br/>";
			echo "梨子:".$voteArray[3]."<br/>";
			
			
		}
		else
			echo "请选择你喜欢的水果";
	}
		
?>
</body>
</html>


3设计一个PHP网页,输入下列5个学生的学号,如果有相同的学号则只保留一个,找到有5位为“01248” 的学生,改为“01111”,最后将所有学号输出,以逗号“,”为分隔符。

学号:

201030235656

201030230479

201030235656

201030201248

201037815687

提示:

1) array_splice(array,offset,length,array)

 

 

2)echo"<input type='text' name='stu[]' size='5'>";   动态产生html控件

3)count(数组)返回数组元素个数

4)strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。

语法

strstr(string,search)参数 描述:

string 必需。规定被搜索的字符串。

search 必需。规定所搜索的字符串。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。

5)str_replace()使用一个字符串替换字符串中的另一些字符。

str_replace(find,replace,string,count)

参数 描述 :

find 必需。规定要查找的值。

replace 必需。规定替换 find 中的值的值。

string 必需。规定被搜索的字符串。

count 可选。一个变量,对替换数进行计数。


具体实现:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>实验5</title>
</head>

<body>

<?php
	
	echo "请输入学号:"."<br/>";
	echo "<form method='post'>";
	//动态产生HTML控件
	for($i = 1; $i < 6; $i++)
	{
		echo "<input type='text' name='stu[]' size='12'>";   
		if($i<5)     
		echo "-"; 
	}
	echo "<input type='submit' name='confirm' value='提交'>"; 
	echo "</form>";
?>
<?php    
	if(isset($_POST['confirm']))    
	{      
	  
		$jsj=array();   
		$stu=$_POST['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);  //删除重复元素
	//删除元素后,j值应该前移一位,执行j++操作才可以保证下次取得是后一个元素
	  				       $j--;  
	                  }
			}       
		}   
 
		
			$k=0; 
		for(;$k<count($stu);$k++)
		{    
			if(strstr($stu[$k],"01248"))   
			 {     
			 	$string=str_replace("01248","01111",$stu[$k]);     
			 	$stu[$k]=$string;     

			}

		}   
		echo "字符替换后,学生的学号如下:<br>";   
		$strnew=implode(",",$stu);  
		echo $strnew;  
	 
	}  
?>
</body>
</html>




  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小巫技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值