プロが教えるわが家の防犯対策術!

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>

A 回答 (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の方法で対処することをおすすめします。
    • good
    • 0

まず、nl2br htmlspecialchars


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

この回答への補足

お世話になります。
よけいな処理をしているようなので
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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!