【PHP】下らねぇ質問はID出して書き込みやがれ 90
■ このスレッドは過去ログ倉庫に格納されています
0839nobodyさん
2009/12/04(金) 01:51:51ID:???漢字の表にらめっこしてて気づいた。UTF-8の[漾-K]とsjisの[漾-K]は違う、と
なのでPHPに直接漢字を書いたら意味を成さない
mb_convert_encodingでshift_jis範囲外の文字をshift_jisに変換すると\x0-\xffの範囲に収まる文字に化けることに気づいたので
書いてみた。これで今度こそちゃんと動くはず
<?php
$string = "ここにsjis範囲外の文字を混ぜてみるといいよ";
$length = mb_strlen($string,"UTF-8");
$return = "";
for($i = 0; $i < $length; $i++){
$now = mb_substr($string,$i,1,"UTF-8");
$sjis = mb_convert_encoding($now,"Shift_JIS","UTF-8");
if(preg_match('/^[\x0-\xff]$/',$now) == 1) {
//半角文字はスルー
$return .= $now;
}else if(preg_match('/^[\x0-\xff]$/',$sjis) == 1) {
//半角文字ではないのにsjisに変換したら半角文字になったらsjis範囲外と判定
$return .= "?".hexdec(bin2hex(mb_convert_encoding($now,"Unicode","UTF-8"))).";";
}else{
//それ以外は対応していると判定
$return .= $now;
}
}
echo $return;
?>
■ このスレッドは過去ログ倉庫に格納されています