php操作php文件
聽起來有些暈吧?!!使用php來操作php頁面。有一個(gè)小的用途,在一個(gè)系統(tǒng)當(dāng)中可能會(huì)有個(gè)別的小項(xiàng)不便存入數(shù)據(jù)庫(kù),但是我們又要經(jīng)常在其他頁面當(dāng)中調(diào)用,而且還需要更新,那么我們就可以用這種方式來解決。其中遇到幾個(gè)小問題,搞了俺半天時(shí)間才搞定
比如說:用戶需要更改某一個(gè)標(biāo)題,但是單獨(dú)為這個(gè)標(biāo)題在建立一個(gè)表,顯然不太合適。所以就想到,把這個(gè)變量寫入php文件當(dāng)中,供其它頁面調(diào)用。name.php文件,需要的內(nèi)容如下:
<?
$name='標(biāo)題';
?>
'標(biāo)題'這兩個(gè)字需要用戶可以更新。那么我們?nèi)绾蝸韺?shí)現(xiàn):
一個(gè)簡(jiǎn)單的提交信息頁面add_name.php
<form action='addname.php' method='post'><input type='text' name='name' size='20' /><input type='submit' value='提交' />
一個(gè)接收用戶提交信息并進(jìn)行處理的頁面addname.php
<? $name=$_POST['name'];;;//接收從add_name.php傳過來的name值if(empty($name)){ //判斷是否為空?><script language='javascript'>alert('名稱不能為空!');document.location='add_name.php';</script><?}else{; $filename='name.php';//定義操作文件$delline=2;;;//要?jiǎng)h除的行數(shù); if(!file_exists($filename)){;//判斷文件是否存在 die('指定文件未發(fā)現(xiàn)!操作中斷!');}$farray=file($filename) //讀取文件數(shù)據(jù)到數(shù)組中for($tmpa=0;$tmpa<count($farray);$tmpa++){ if(($tmpa+1)==2){;//判斷行數(shù) $farray[$tmpa]='$name2='.'''.$name.'';n';;;* //替換原有行的數(shù)據(jù) };//重新整理后的數(shù)據(jù) $newfp.=$farray[$tmpa]; }$fp=@fopen($filename,'w') or die('寫方式打開文件 $filename 失敗');
//我們以寫的方式打開文件
@fwrite($fp,$newfp) or die('文件寫入失敗');
@fclose($fp);關(guān)閉文件}?>
這段代碼只是做測(cè)試用117-202 1Z0-043 1z0-042; 。寫的不規(guī)范的地方倒是貽笑大方了!
這樣我們就可以用來更新name.php文件當(dāng)中的變量。當(dāng)然這是一種比較笨的方法(誰讓俺也是笨人)。這種需求還有很多種實(shí)現(xiàn)方式。
其中*標(biāo)記的一行當(dāng)中,我們用到轉(zhuǎn)義字符,這個(gè)說起來很簡(jiǎn)單,但是我測(cè)試的時(shí)候由于方法不得當(dāng)?shù)故抢速M(fèi)了不少時(shí)間。現(xiàn)在把轉(zhuǎn)義字符表貼在下面:
轉(zhuǎn)義字符 序列含義 n;;;換行(LF 或 ASCII 字符 0x0A(10)) r;;;回車(CR 或 ASCII 字符 0x0D(13)) t;;;水平制表符(HT 或 ASCII 字符 0x09(9)) ;;;反斜線 $;;;美元符號(hào) ';;;雙引號(hào)
[0-7]{1,3} 此正則表達(dá)式序列匹配一個(gè)用八進(jìn)制符號(hào)表示的字符x[0-9A-Fa-f]{1,2} 此正則表達(dá)式序列匹配一個(gè)用十六進(jìn)制符號(hào)表示的字符
單就處理字符串而言,使用單引號(hào)要比使用雙引號(hào)速度要快,所以你要在你的程序中選擇適當(dāng)?shù)囊?hào)。
