みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

TEXTAREAに入力したタグイメージで保存する方法について

TEXTAREAに入力した内容で携帯用の画面を作成してます。
TEXTAREAに入力した内容が変換されてTEST.HTMLに出力されてしまいます。

TEXTAREAに入力したタグ内容をそのままTEST.HTMLに出力するには
どこを修正すればよろしいのでしょうか?
よろしくお願いします。

【TEXTAREAに入力したタグ↓】
<span style=\"color: #ff0000\">12345</span>

【出力したTEST.HTMLの内容↓】
<html><head><meta http-equiv='Content-Type' content='text/html; charset=shift_jis'>
</head>
<body>&lt;span style=\&quot;color: #ff0000\&quot;&gt;12345&lt;/span&gt;
</body>
</html>

【ファイル名:abc.php】
<?

$head = "<meta http-equiv='Content-Type' content='text/html; charset=shift_jis'>";

//送信情報更新
if($_POST["make"]){

$str = nl2br(htmlspecialchars(mb_convert_encoding($_POST['keitai'], 'SJIS', 'UTF-8')));

$html = <<<HTMLFILE
<html><head>$head</head><body>$str</body></html>
HTMLFILE;

//HTMLファイル作成
$filename="./TEST.html";
//ファイルオープン
$fp = fopen($filename, 'w');
if(!$fp){
exit('open err');
}
//ファイルのロック処理
flock($fp, LOCK_EX);
if(fwrite($fp, $html) === false){
exit('write err');
}
fclose($fp);
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>画面作成</title>
</head>
<body>
<table>
<form action="abc.php" method="post">
<tr>
<td>html</td>
<td><textarea id="keitai" name="keitai" cols="30" rows="10"><? echo $_POST["keitai"] ?></textarea></td>
</tr>
<tr><td>
<input type="submit" name="make" value="作成">
</td></tr>
</form>
</table>
</body>
</html>

投稿日時 - 2009-09-26 21:18:14

QNo.5321203

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

おそらくマジッククオート設定がONになっているんじゃないかな。
print_r(get_magic_quotes_gpc());
をどこかに追加して、1が表示されたら 設定を直すか回避する必要があります。

A.php.iniのmagic_quotes_gpcの値を0にする
B.ini_set('magic_quotes_gpc',0)をプログラムの出来るだけ先頭に追加する
C.stripslashes()で取り除く

マジッククオートONの設定はPHP5では非推奨、6では削除と、公式でいらない子認定されてるので、
AかBの方法で対処することをおすすめします。

投稿日時 - 2009-09-27 11:55:23

ANo.1

まず、nl2br htmlspecialchars
という関数の動きを調べてみることをお勧めします。

投稿日時 - 2009-09-27 01:55:19

補足

お世話になります。
よけいな処理をしているようなので
htmlspecialcharsをはずしてみました。「nl2br」はあってもいいのかな...
$detail = nl2br(mb_convert_encoding($_POST['keitai'], 'SJIS', 'UTF-8'));
すると
「TEST.HTML」の内容です。↓
<span style=\"color: #ff0000\">12345678</span>
「”」の前に「¥」マークが挿入されてしまい色の表示ができません。
対処方法を教えていただけないでしょうか?
よろしくお願いします。

投稿日時 - 2009-09-27 08:08:13