ホームページ >php教程 >php手册 >テキストエリア(TextArea)の使い方についての質問です。

テキストエリア(TextArea)の使い方についての質問です。

WBOY
WBOYオリジナル
2016-06-21 08:58:281269ブラウズ

質問

フォームを使用して情報を処理していたときに、テキスト フィールドが正しく処理されていないことがわかりました。たとえば、次のテーブル:

---------------------------------- ----------------------------
test.html


;
TextArea テスト
"test.php">
ファイル名

内容:
;textarea name="content"cols="80" rows="20">"aaa" "bbb"



;/html>

test.php

$fp=fopen($fp, $content);

fclose($fp);

エコー

?> -- ----------------------------------

上記の例は主にテスト用です。私が実現したいのは、ユーザーがファイル名を入力してから、ファイルの内容を入力できるようにすることです。確認後、ファイルをサーバーに保存できます。以下に 1 つまたは 2 つのファイルの内容を簡単に説明します。

test.html には、テキスト ボックスとテキスト フィールドを備えたフォームがあります。テキストボックスは保存するファイル名を入力するために使用され、テキストフィールド
はファイルの内容を入力するために使用されます。デフォルトのファイル名は「test.txt」、デフォルトのファイル内容は「aaa」「bbb」です。フォームのアクションは「post」、実行ファイルは「test.php」です。

test.php は非常にシンプルです。指定したファイルを開き、ファイルの内容を書き込み、ファイルを閉じて、「OK」を出力します。

当初、ファイルの内容は "aaa" "bbb" であるべきだと思っていましたが、結果はこのようにはならず、 "aaa" \"bbb\" になりました。二重引用符 (") とバックスラッシュ () の前にエスケープ用のバックスラッシュが追加されます (実際には一重引用符とヌル (nul) もあります)。これはなぜでしょうか。 そこで、PHP の中国語マニュアルを確認したところ、magic_quotes_gpc と magic_quotes_runtime の説明を見つけました。このようにして、PHP.ini 設定で magic_quotes_gpc と magic_quotes_runtime

をオフに設定したため、それが正しいことがわかりました。サーバーを変更しますか? そこで、文字列処理関数を確認したところ、stripslashes() 関数で最初にこれを実行できることがわかりました。次に、test.php を次のように変更します。 ------------------------ -------------------
<

$fp=fopen($ファイル名, "w");

$content=stripslashes($content); fp);

エコー

?>-------- ----------- --------------
結果をもう一度確認してください。私のニーズを完全に満たしています。

もう 1 つ注意すべき点は、たとえば、最初にファイルの内容を読み取ってテキスト フィールドに入力し、ファイル内に「<」、「>」などの特別な記号がある場合に変更を加えることができます。 「&」文字などは、直接表示すると実際の内容と一致しませんが、問題はありません。PHP には、特殊文字を HTML 文字列形式に変換する htmlspecialchars() 関数も用意されています。この表示と処理は正しいです。

これはテキストフィールドを処理するときに発見した問題です。お役に立てれば幸いです。






声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。