<?php
# プログラム bbs.php STEP4
$name = $HTTP_POST_VARS["NAME"];
$mail = $HTTP_POST_VARS["MAIL"];
$body = $HTTP_POST_VARS["BODY"];
$body = str_replace("\r\n", "<br>", $body);
echo '
<html>
<head>
<title>PHP-BBS</title>
</head>
<body>
<h1>PHP-BBS</h1>
STEP4<br>
<form method="post" action="bbs.php" accept-charset="x-euc-jp">
お名前 <input type="text" size="16" maxlength="30" name="NAME">
メール <input type="text" size="30" maxlength="50" name="MAIL"><br>
本文<br>
<textarea rows="10" cols="70" wrap="soft" name="BODY"></textarea><br>
<input type="submit" name="SUBMIT" value="送信">
</form>
';
echo "お名前:<a href=\"mailto:$mail\">$name</a><br>";
echo "本文:$body<br>";
echo '</body></html>';
?>
|
<textarea wrap="soft">で指定したテキストエリア内で[Enter]キーで改行された場合、目に見えない特殊な文字コードが入ります。
このコードを直接HTMLとしてブラウザに出力しても改行はされません。
$body = str_replace("\r\n", "<br>", $body);はstr_replace(文字列置換)と言うPHPの命令文で$body内のデータに対し、"リターン(\r)改行(\n)"と言う並びの文字コードを"<br>"に置き換え、再び$bodyに格納しなさい、と言う意味になります。
<br>はHTMLの改行を意味しますので、これでちゃんと改行表示されるようになります。
このように" "で囲まれた中で\に続く文字はエスケープシーケンスと呼ばれ、PHPは特別な解釈を行います。
お名前:<a href=\"mailto:$mail\">$name</a>はSTEP3の変形です。
入力されたメールアドレスをあえて表示せず、名前のリンクとして使います。
良くみかけるタイプで名前をクリックするとメールが立ち上がる、アレです。
" "の中で更に" "を2重、3重に使う場合、どこからどこまでが一つの" "範囲かPHPは理解できなくなります。
これを解決するにも\を使ったエスケープシーケンスを用います。
" "の中で"を使う場合、"の先頭に\を付け加えます。
つまり " \" \" " のようになります。
では質問です!
$colorに文字色、$sizeにフォントサイズを保持している場合、echo文を使って<font>タグをどう出力しますか?
答えは最後に...
|