---------------------------------------------------------------
test.html
<html>
<head>
<title> textarea test </title>
</head>
<body bgcolor="#ffffff">
<form method="post" action="test.php">
文件名<input type="text" name="filename" value="test.txt"><br>
內(nèi)容:<br>
<textarea name="content" cols="80" rows="20">"aaa" /"bbb/"</textarea><br>
<input type="submit" name="submit" value="寫好了">
<input type="reset" name="submit2" value="重寫">
</form>
</body>
</html>
test.php
<?
$fp=fopen($filename, "w");
fwrite($fp, $content);
fclose($fp);
echo "ok";
?>
------------------------------------------------------
上面的例子是用來測試的,主要是想完成用戶可以輸入一個(gè)文件名,然后可以輸入文件的內(nèi)容。確認(rèn)后可以在服務(wù)器上保存文件。下面簡單地說明一個(gè)兩個(gè)文件的內(nèi)容。
test.html 中有一個(gè)表單,里面有一個(gè)文本框和一個(gè)文本域。文本框用來輸入要保存的文件名,文本域
用來輸入文件的內(nèi)容。文件名缺省設(shè)為"test.txt",文件內(nèi)容缺省設(shè)為"aaa" /"bbb/"。表單的動(dòng)作為"post",執(zhí)行文件為"test.php"。
test.php則很簡單。打開指定文件,寫入文件內(nèi)容,關(guān)閉文件,輸出"ok"。
原來我想文件內(nèi)容應(yīng)該是"aaa" /"bbb/",但結(jié)果并不是這樣,而是/"aaa/" ///"bbb///"!在每一個(gè)雙引號(hào)(")和反斜線(/)(其實(shí)還有單引號(hào)和空(nul))前都加上了一個(gè)轉(zhuǎn)義用的反斜線。這是為什么? 于是,我查詢了php中文手冊(cè),看到關(guān)于php.ini的配置中關(guān)于magic_quotes_gpc和magic_quotes_runtime的說明,我知道了是因?yàn)閜hp給自動(dòng)處理了。這樣,我就將php.ini配置中的magic_quotes_gpc和magic_quotes_runtime
設(shè)成了off,結(jié)果就正確了。
但是如果服務(wù)器我無法改動(dòng)怎么辦?于是又查閱了一下字串符處理函數(shù),我發(fā)現(xiàn)stripslashes()函數(shù)就可以完成這個(gè)工作。這樣首先把php.ini改成原來的樣子,再修改test.php如下:
--------------------------------------------------
<?
$fp=fopen($filename, "w");
$content=stripslashes($content);
fwrite($fp, $content);
fclose($fp);
echo "ok";
?>
--------------------------------------------
再檢查結(jié)果,完全符合我的需要!
還有要注意的是,如果你想做一個(gè)修改文件內(nèi)容的應(yīng)用。如,首先把文件內(nèi)容讀出來,放入到文本域中,用戶可以進(jìn)行修改。那么當(dāng)文件中有特殊的符號(hào),如"<",">","&" 符等,直接顯示就會(huì)與實(shí)際內(nèi)容不符。沒關(guān)系,php還提供了htmlspecialchars()函數(shù)將特殊字符轉(zhuǎn)換成html 的字串格式,這樣顯示與處理都是正確的了。
這是我在處理文本域時(shí)發(fā)現(xiàn)的一個(gè)問題,希望能對(duì)你有幫助!
新聞熱點(diǎn)
疑難解答