zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    easyui-tree/combotree 子节点前端懒加载(主要解决ie11下加载慢
    解决 Chrome 下表单自动填充问题 (两种方法
    代码编辑器:本地JS文件上传并加载到页面
    PC端使用rem进行屏幕适配
    ECharts 点击非图表区域的点击事件不触发问题
    Angular2+ 使用 Post 请求下载文件
    Express + Element-ui 实现图片/文件上传
    phpMyAdmin -- 没有权限操作用户
    Note of Moment -- 日期处理
    Angular 自定义表单控件 -- CheckboxGroupComponent
  • 原文地址:https://www.cnblogs.com/sunxun/p/3938882.html
Copyright © 2011-2022 走看看