文字コードに関するテストコード
<?php
// タグの前に生のHTMLヘッダを書き出す
header('Content-Type: text/html; charset=UTF-8');
?>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<form method="post" action="mb_sample.php">
<input type="text" maxlength="40" name="val" />
<input type="submit" value="submit" />
</form>
<?php
// mb_check_encoding 関数で文字エンコーディングをチェックするサンプル
if(!isset($_POST['val']) || $_POST['val'] == ''){
die('not submitted');
}
//[mb_check_encoding]そのバイトストリームが指定したエンコーディングで有効かを調べます。
//これは、いわゆる「不正なエンコーディングによる攻撃」を防ぐのに役立ちます。
if(mb_check_encoding($_POST['val'] , 'UTF-8')){
echo 'encoding OK';
}else{
echo 'encoding NG';
}
// 内部文字エンコーディングを表示
echo mb_internal_encoding();
// 内部文字エンコーディングを設定
mb_internal_encoding('UTF-8');
// 内部文字エンコーディングを表示
echo mb_internal_encoding();
$val = 'おやがめこけたらこがめがこけた';
// UTF-8で34バイトに収まる文字列を取得
$val2 = mb_strcut($val,0,34,'UTF-8');
// subject に関して pattern を用いて検索を行い、 replacement に置換します。
$val3 = preg_replace('/がめ/u','亀',$val2);
//特殊文字を HTML エンティティに変換する
// 文字コードの指定は行うこと
echo htmlspecialchars($val3,ENT_QUOTES, 'UTF-8'),'<BR><BR>';
// 出力結果
// encoding OKISO-8859-1UTF-8おや亀こけたらこ亀
?>
</body>
</html>