在PHP中正则表达式验证输入内容

方文锋  2020-08-01 12:59:36  1264  首页学习PHP

在PHP中使用正则表达式验证输入内容,比如验证 数字、英文、中文、联系电话、邮箱等。如下代码:
 <?php
/**
 * 必须是字母
 * @param $str
 * @return false|int
 */
function is_alp($str)
{
    return preg_match('/^[a-zA-Z]+$/', $str);
}

/**
 * 验证必须是汉字
 * @param $str
 * @param string $encoding
 * @return false|int
 */
function is_chs($str, $encoding = 'utf-8')
{
    return strtolower($encoding) === 'utf-8' ? preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', $str) : preg_match("/^[\x7f-\xff]+$/", $str);
}

/**
 * 必须是数字
 * @param $str
 * @return false|int
 */
function is_num($str)
{
    return preg_match('/^[0-9]+$/', $str);
}

/**
 * 必须是字母、数字、横线、下划线
 * @param $str
 * @return false|int
 */
function is_ald($str)
{
    return preg_match("/^[\-_—a-zA-Z0-9]+$/", $str);
}

/**
 * 必须是汉字、字母
 * @param $str
 * @param string $encoding
 * @param string $add_preg 额外添加的匹配字符
 * @return false|int
 */
function is_chsAlpha($str, $encoding = 'utf-8', $add_preg = '')
{
    return strtolower($encoding) === 'utf-8' ? preg_match('/^[a-zA-Z' . $add_preg . '\x{4e00}-\x{9fa5}]+$/u', $str) : preg_match("/^[a-zA-Z" . $add_preg . "\x7f-\xff]+$/", $str);
}

/**
 * 必须是汉字、字母和数字
 * @param $str
 * @param string $encoding
 * @param string $add_preg 额外添加的匹配字符
 * @return false|int
 */
function is_chsAlphaNum($str, $encoding = 'utf-8', $add_preg = '')
{
    return strtolower($encoding) === 'utf-8' ? preg_match('/^[a-zA-Z0-9' . $add_preg . '\x{4e00}-\x{9fa5}]+$/u', $str) : preg_match("/^[a-zA-Z0-9" . $add_preg . "\x7f-\xff]+$/", $str);
}

/**
 * 必须是汉字、字母、数字和下划线_及破折号-
 * @param $str
 * @param string $encoding
 * @param string $add_preg 额外添加的匹配字符
 * @return false|int
 */
function is_chsDash($str, $encoding = 'utf-8', $add_preg = '')
{
    return strtolower($encoding) === 'utf-8' ? preg_match('/^[\-_—a-zA-Z0-9' . $add_preg . '\x{4e00}-\x{9fa5}]+$/u', $str) : preg_match("/^[\-_—a-zA-Z0-9" . $add_preg . "\x7f-\xff]+$/", $str);
}

/**
 * 必须是电话号码(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号)
 * @param $str
 * @return false|int
 */
function is_phone($str)
{
    return preg_match('/((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)/', $str);
}

if(!function_exists('is_email')){
    /**
     * 必须是邮箱地址
     * @param $str
     * @return false|int
     */
    function is_email($str)
    {
        return preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', $str);
    }
}