码迷,mamicode.com
首页 > Web开发 > 详细

php 半角与全角相关的正则

时间:2014-08-27 12:23:27      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:http   io   for   ar   cti   html   sp   on   ad   

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

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

<!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 半角与全角相关的正则

标签:http   io   for   ar   cti   html   sp   on   ad   

原文地址:http://www.cnblogs.com/sunxun/p/3938882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!