//区別文字列は、arrayである。注:対象は、全角/半角の片仮名と英語文字のみに限られている。
function my_split($string){
$count = mb_strlen($string);
for($i=0;$i<$count;){
$ordvalue=ord(substr($string,$i,1));
if($ordvalue==131 || $ordvalue==130 || $ordvalue==129){
$ret[]=substr($string,$i,2);
$i+=2;
}else{
$ret[]=substr($string,$i,1);
$i+=1;
}
}
return $ret;
}
//半角の片仮名を全角の片仮名に変換する。
function convKanaZenHan( $str )
{
$kanaBefore = "ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ワ ワ ヲ ン ー A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ,";
$kanaAfter = "ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ ヲ ン ー A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 、";
$array = my_split($str);
$backslash = explode(" ",$kanaBefore);
$chairman = explode(" ",$kanaAfter);
$restr="";
foreach($array as $key=>$value){
$pos=array_search($value,$backslash);
if(($pos=array_search($value,$backslash))!=null){
$restr.=$chairman[$pos];
}else{
$restr.=$value;
}
}
return $restr;
}
echo convKanaZenHan("ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ ヲ ン ー A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 、");