字符串全角半角转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37352702/article/details/77930035
/**
 * 字符串全角半角转换
 * @param $str ,带转换字符串
 * @param int $flag ,0|1 $flag=0半角转全角,$flag = 1 全角转半角,
 * @return string  字符串
 */
function strFullHalf($str, $flag = 0)
{
    $str = trim($str);
    if (empty($str)) return '';

    $quan = array(//全角
        '0', '1', '2', '3', '4',
        '5', '6', '7', '8', '9',
        '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',
        '-', ' ', ':', '.', ',', '/', '%', '#', '!', '@',
        '&', '(', ')', '<', '>', '"', ''', '?', '[', ']',
        '{', '}', '\', '|', '+', '=', '_', '^', '¥', ' ̄', '`'
    );

    $ban = array( // 半角
        '0', '1', '2', '3', '4',
        '5', '6', '7', '8', '9',
        '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',
        '-', ' ', ':', '.', ',', '/', '%', '#', '!', '@',
        '&', '(', ')', '<', '>', '"', '\'', '?', '[', ']',
        '{', '}', '\\', '|', '+', '=', '_', '^', '$', '~', '`'
    );

    if ($flag == 1) {
        //全角转半角
        foreach ($quan as $k => $v) {
            if (preg_match("/$v/", $str)) {
                $str = preg_replace("/$v/", $ban[$k], $str);
            }
        }
    } else {
        //半角转全角
        $a = array('$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', "{", "}", '|', '/',);
        foreach ($ban as $k => $v) {

            if (!preg_match('/[0-9a-zA-Z]/', $v)) {
                if (in_array($v, $a)) {
                    if (preg_match("/\\$v/", $str)) {
                        $str = preg_replace("/\\$v/", $quan[$k], $str);
                    }
                } else {
                    if (preg_match("/$v/", $str)) {
                        $str = preg_replace("/$v/", $quan[$k], $str);
                    }
                }
            }

        }
    }

    return $str;
}

猜你喜欢

转载自blog.csdn.net/qq_37352702/article/details/77930035
今日推荐