请问有没有将半角转变为全角的方法,我用到一个函数只处理全角的,输入半角字符就会有错,有将输入半角字符自动转换为全角的吗?

解决方案 »

  1.   

    如果仅仅是ASCII 1-127以内的的字符,用字表或者运算替换都是很快速的
    不需理会哪种方法但如果要把欧洲字符等等都涉及在内,就有很多判断,需要一些特定的类
      

  2.   

    我做的一个日文半角片假名转全角片假名的函数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 = "&#65383; &#65393; &#65384; &#65394; &#65385; &#65395; &#65386; &#65396; &#65387; &#65397; &#65398; &#65398;&#65438; &#65399; &#65399;&#65438; &#65400; &#65400;&#65438; &#65401; &#65401;&#65438; &#65402; &#65402;&#65438; &#65403; &#65403;&#65438; &#65404; &#65404;&#65438; &#65405; &#65405;&#65438; &#65406; &#65406;&#65438; &#65407; &#65407;&#65438; &#65408; &#65408;&#65438; &#65409; &#65409;&#65438; &#65391; &#65410; &#65410;&#65438; &#65411; &#65411;&#65438; &#65412; &#65412;&#65438; &#65413; &#65414; &#65415; &#65416; &#65417; &#65418; &#65418;&#65438; &#65418;&#65439; &#65419; &#65419;&#65438; &#65419;&#65439; &#65420; &#65420;&#65438; &#65420;&#65439; &#65421; &#65421;&#65438; &#65421;&#65439; &#65422; &#65422;&#65438; &#65422;&#65439; &#65423; &#65424; &#65425; &#65426; &#65427; &#65388; &#65428; &#65389; &#65429; &#65390; &#65430; &#65431; &#65432; &#65433; &#65434; &#65435; &#65436; &#65436; &#65382; &#65437; &#65392; 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 、");
      

  3.   

    嗯,我现在也遇到了这个问题了,像vb好像就一个strConv函数就搞定了。