<?php
// 2012.3.16 久しぶりに使ったらエラーになった。mb_encode_numericentityの第3パラメータを追加。
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>メールアドレス変換</title>
</head>
<body>
<?php
$mailto = $_POST['mailto'];
$subject = $_POST['subject'];
// タグの埋め込みを無効化する。
$mailto = htmlspecialchars($mailto);
$subject = htmlspecialchars($subject);
?>
<p>メールアドレスと件名を入力して、送信してください。</p>
<p>メールアドレスを10進表記にエンコーディングし件名をSift-jisのurlエンコードしたものに変換してくれます。</p>
<form action="mailto.php" method="POST">
<input type="hidden" name="encode" value="入口あ花美乳">
メールアドレス:<input type="text" name="mailto" size="50" value="<?= $mailto ?>" /><br />
件名      :<input type="text" name="subject" size="50" value="<?= $subject ?>" /><br /><br />
<input type="submit" value="送信" />
</form>
<hr /><br />
<?php
$convmap = array(
0x30,0x39,0,0xffff, //0-9
0x61,0x122,0,0xffff, //a-z
0x41,0x5a,0,0xffff, //A-Z
0x40,0x40,0,0xffff, //@
0x2e,0x2e,0,0xffff, //.
0x2d,0x2d,0,0xffff, //-
0x5f,0x5f,0,0xffff //_
);
$encode = mb_detect_encoding($_POST['encode']); // フォームから送られてきた文字コードを判別する。
echo "送信された文字コードは、".$encode."です。<br /><br />\n";
if(!empty($mailto) && !empty($subject)){
// メールアドレスと件名の両方入力されていた場合
$mail_enc = mb_encode_numericentity($mailto,$convmap, "sjis-win");
$mailto_enc = mb_encode_numericentity('mailto:',$convmap, "sjis-win").$mail_enc;
$subject_enc = urlencode(mb_convert_encoding($subject,'SJIS',$encode));
$pr = '<a href="'.$mailto_enc.'?subject='.$subject_enc.'">'.$mail_enc.'</a>';
echo $pr."<br /><br />\n";
echo "<input type='text' value='".htmlspecialchars($pr)."' size='100' />\n";
}else if(!empty($mailto)){
// メールアドレスのみ入力されていた場合。
$mail_enc = mb_encode_numericentity($mailto,$convmap, "sjis-win");
$mailto_enc = mb_encode_numericentity('mailto:',$convmap, "sjis-win").$mail_enc;
$pr = '<a href="'.$mailto_enc.'">'.$mail_enc.'</a>';
echo $pr."<br /><br />\n";
echo "<input type='text' value='".htmlspecialchars($pr)."' size='100' />\n";
}else if(!empty($subject)){
//件名のみ入力されていた場合。
$subject_enc = urlencode(mb_convert_encoding($subject,'SJIS',$encode));
$pr = $subject_enc;
echo "<input type='text' value='".htmlspecialchars($pr)."' size='100' />\n";
}
?>
</body>
</html>