首页 > 代码库 > php 半角与全角相关的正则

php 半角与全角相关的正则

半角的全部确认,带小初音的确认法则

^[?-????-???? -]+$

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
  <TITLE> convert_kana </TITLE>
 </HEAD>

 <BODY>
  <?php

/**
 * 全角を半角にする
 * @param    string $instr 変換前文字列
 * @return    string 変換後文字列
*/
function zen2han($instr) {
    $flag = FALSE;            //直前文字が全角カタカナならTRUE
    $len = mb_strlen($instr);
    $ofst = 1;
    $outstr = ‘‘;

    for ($ofst = 0; $ofst < $len; $ofst++) {
        $ch = mb_substr($instr, $ofst, 1);
        if ($ch == ‘ー‘) {
            if ($flag)    $outstr .= ‘?‘;                    //カタカナの長音記号
            else        $outmb_ereg_matchstr .= $ch;
        } else if ((‘[ァ-ヶ]+‘, $ch)) {    //カタカナの範囲
            $outstr .= mb_convert_kana($ch, ‘k‘);
            $flag = TRUE;
        } else if (mb_ereg_match(‘[0-9]+‘, $ch)) {    //全角数字の範囲
            $outstr .= mb_convert_kana($ch, ‘n‘);
            $flag = TRUE;
        } else if (mb_ereg_match(‘[A-Z]+‘, $ch)) {    //全角英字の範囲
            $outstr .= mb_convert_kana($ch, ‘r‘);
            $flag = TRUE;
        } else if (mb_ereg_match(‘[ぁ-ん]+‘, $ch)) {    //ひらがなの範囲
            $flag = TRUE;
            $outstr .= mb_convert_kana($ch, ‘h‘);
        } else {
            $outstr .= $ch;
            $flag = FALSE;
        }
    }
    return $outstr;
}

/**
 * 引数の文字列が全て半角文字であるかチェックする
*/
function is_half($instr) {
    $flag = FALSE;            //直前文字が全角カタカナならTRUE
    $len = mb_strlen($instr);
    $ofst = 1;
    $outstr = ‘‘;

    for ($ofst = 0; $ofst < $len; $ofst++) {
        $ch = mb_substr($instr, $ofst, 1);
        if (mb_ereg(‘^[?-?????]+$‘, $ch)) {
            $flag = TRUE;
        } else if (mb_ereg(‘^[a-zA-Z0-9]+$‘, $ch)) {
            $flag = TRUE;
        } else {
            $flag = false;
        }
        if($flag == false) break;
    }
    return $flag;
}

mb_internal_encoding(‘EUC-JP‘);

//$str = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん";
$str = "日本02Ab56asbaあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん";

print  $str . "<br />";

// 全角カタカナを半角にする
$str = zen2han($str);
print  $str . "<br />";

if(is_half($str) == true) {
    print "ok";
} else {
    print "error";
}

?>
 </BODY>
</HTML>

php 半角与全角相关的正则