根据表单上的选择创建不同的正则表达式

时间:2014-05-21 16:42:18

标签: regex forms

目前,我正在制作项目的付款方式。现在我根据表单上的选择创建正则表达式。以下是付款方式的代码

<h1>Payment </h1>
<fieldset>
<legend> 
    <font size="6">Please input your payment information correctly</font>
</legend>
<p>
<form action="" method="post">
    <ul>
        <li>
            Your Reservation Number: <?php echo $reservation_id;?><br>
            <input type="hidden" name="reservation_id" value="<?php echo $reservation_id;?>">
            <input type="hidden" name="roomtype" value="<?php echo $roomtype;?>">
            <input type="hidden" name="num_of_rooms" value="<?php echo $num_of_rooms;?>">
            <input type="hidden" name="dor" value="<?php echo $dor;?>">
            <input type="hidden" name="dco" value="<?php echo $dco;?>">
            <input type="hidden" name="length_of_stay" value="<?php echo $length_of_stay;?>">
        </li>
        <li>
            Bank in From: <br>
            <select name="bank_in_from" id="bank_in_from">
            <option value="">Select</option>
            <option value="Bank A">Bank A</option>
            <option value="Bank B">Bank B</option>
            <option value="Bank C">Bank C</option>

          </select>
        </li>
        <li>
            Account No.: <br>
            <input type="text" name="acc_no">
        </li>
        <li>
            Holder Name: <br>
            <input type="text" name="holder_name">
        </li>



          <input type="submit" value="Submit">
  <input type="reset" value="Clear" >
        <li>

    </ul>

案件就像这样

  • 如果用户选择银行A,如果数字位数不小于或大于12,则acc no.表格可以接受
  • 如果用户选择B行,如果数字位数不小于或大于10,则acc no.表格可以接受
  • 如果用户选择银行C,如果数字位数不小于或大于9,则acc no.表格可以接受

所有帐号显然都是数字,不能与字母或任何特殊字符混合。

代码如何?

1 个答案:

答案 0 :(得分:0)

一种令人惊讶的直接处理方法是使用变量来表示您希望使用的不同正则表达式模式。

因此有些东西:

switch($chosen_bank){
        case('bankA'):
             $appropriate_regex = '\d{12}';
             break;
        case('bankB'):
             $appropriate_regex = '\d{10}';
             break;
        case('bankC'):
             $appropriate_regex = '\d{9}';
             break;
 }

 // then you'll need something like:

 $submitted_string = $_POST['submitted_bank_number'];
 $pattern = "/$appropriate_regex/";
 preg_match($pattern, $submitted_string, $matches, PREG_OFFSET_CAPTURE);
 print_r($matches);

那将输出:

   Array
   (
       [0] => Array
           (
               [0] => 1234563820
           )

   )

因此,您可以使用

获取银行帐号
   $target_bank_number = $matches[0][0];

你应该可以从那里拿走它。

首先掌握这些变量,您可以在Calculating values with formulae from user input in PHP看到基本的表单处理示例

正如您指定的动作=&#34;&#34;在您的表单标记中,您将在页面下方包含以下内容以处理用户提交内容:

<?php

    if ($_POST){
          $php_varA    = $_POST['submitted_form_valueA'];
          $chosen_bank = $_POST['chosen_bank'];

          //here process the input using regular expressions/ database access, etc, etc

    }     

?>

&GT?;