PHP 正则表达式的校验

本文展示了如何使用PHP的正则表达式进行表单验证,包括检查电子邮件地址和电话号码的格式。通过preg_match和preg_replace函数,确保用户输入的数据符合预设的格式标准,例如去除电话号码中的特殊字符。

\d数字  \w数字字母  \s空白符  ^以什么开头  $什么结尾  []   ()组  ?有或没有    {2}次数          [^1-2]除1,2以外的字符   

preg_match($regex,$string)        preg_replace($pattern,$replacement,$string)

$new_phone = preg_replace('/[\(\)\-\s]/', '', $phone) 去掉(- )换成空   便于数据库统一储存格式

<!-- 电话号码/邮箱正则验证 -->
<!DOCTYPE html>
<html>
<head>
    <title>Risky Jobs Registration</title>
</head>
<body>
    <h3>Risky Jobs - Registration </h3>
    <?php 
    require_once('define.php');
if (isset($_POST['submit'])) {
    $firstname = $_POST['firstname'];
    $lastname = $_POST['lastname'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $job = $_POST['job'];
    $resume = $_POST['resume'];
    $output_form = 'no';

    if (empty($firstname)) {
        echo '<p>You forgot to enter your first name.</p>';
        $output_form = 'yse';
    }
    if (empty($lastname)) {
        echo '<p>You forgot to enter your last name.</p>';
        $output_form = 'yse';
    }
    if (!preg_match('/^[a-zA-Z0-9][a-zA-Z0-9\._\-&!?=#]*@/', $email)) {
        echo '<p>Your email address is invalid.</p>';
        $output_form = 'yse';
    }
    else{
        //能匹配大部分email地址
        $domain = preg_replace('/^[a-zA-Z0-9][a-zA-Z0-9\._\-&!?=#]*@/', '', $email);
        // if (!checkdnsrr($domain)) {//检查域名是否注册
        //     echo 'You email address is invalid.<br>';
        //     $output_form = 'yes';
        // }
        $output_form = 'yes';
    }
    //可能有() 2-9开头 2位数字 -或者空格 -4位数字
    if (!preg_match('/^\(?[2-9]\d{2}\)?[-\s]\d{3}-\d{4}$/', $phone)) { 
        echo '<p>You phone number is invalid.</p>';
        $output_form = 'yse';
    } 
    if (empty($job)) {
        echo '<p>You forgot to enter your job.</p>';
        $output_form = 'yse';
    } 
    if (empty($resume)) {
        echo '<p>You forgot to enter your resume.</p>';
        $output_form = 'yse';
    }
    else{
        $output_form = 'yes';
    }
    if ($output_form == 'yes'){ //如果当条件为yes时,显示表单,
        echo '显示表单:<br>';
    } 
}

?>    
    <!-- 显示表单 -->
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
        <table>
        <tr><td><label for="firstname">First name:</label></td><td><input type="text" name="firstname" id="firstname" value="<?php if(!empty($firstname)) echo $firstname;?>"></td></tr>
        <tr><td><label for="lastname">Last name:</label></td><td><input type="text" name="lastname" id="lastname" value="<?php if(!empty($lastname)) echo $lastname;?>"></td></tr>
        <tr><td><label for="email">Email:</label></td><td><input type="email" name="email" id="email" value="<?php if(!empty($email)) echo $email;?>"></td></tr>
        <tr><td><label for="phone">Phone:</label></td><td><input type="text" name="phone" id="phone" value="<?php if(!empty($phone)) echo $phone;?>"></td></tr>
        <tr><td><label for="job">Desired Job:</label></td><td><input type="text" name="job" id="job" value="<?php if(!empty($job)) echo $job;?>"></td></tr>
        <tr><td><label for="resume">Past your resume here:</label></td><td><input type="text" name="resume" id="resume" value="<?php if(!empty($resume)) echo $resume;?>"></td></tr>
        <tr><td><input type="submit" name="submit" value="Submit"></td></tr>
        </table>
    </form>


</body>
</html>

 

dbc.php

<?php 
    //connecting define
    define('DB_HOST', '127.0.0.1');
    define('DB_USER', 'root');
    define('DB_PASSWORD', 'root');
    define('DB_NAME', 'test');

    //app define
    define('GW_UPLOADPATH', 'images/');
    define('GW_MAXFILESIZE',32768); //32k

//win 下检测dnsrr
    // $domain = '@qq.com';
    function win_checkdnsrr($domain, $recType=''){
        if (!empty($domain)) {
            if (!$recType=='') $recType="MX";
            exec("nslooup -type=$recType $domain",$output);//exec 调用服务器上的一个外部程序来检测域
            foreach ($output as $line) {
                if (preg_match("/^$domain/", $line)) {
                    echo '<pre>';
                    print_r($line);
                    return ture;
                }
            }
            return false;
        }
        return false;
    }
    // win_checkdnsrr($domain);
    //linux下 checkdnsrr('php.com'); 直接检测域名
 ?>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值