使用“ preg_match”(或类似的东西)来匹配“ select”选项

时间:2019-10-09 16:55:00

标签: php regex

我正在尝试编写验证,该验证也检查所选择的选项是否与正则表达式匹配。有10个选项,只有一个选项是错误的。

到目前为止,iv尝试将if和else语句与“ preg_match”和“ $ matches”结合使用,但我似乎无法使其用于选择选项。这是我的代码以及到目前为止我一直在尝试的代码。

表单上的“我的选择”选项:

<h3>Standard</h3>
<label for="Adu">Adults</label>
  <span class="error">* <?php echo $staErr;?></span>
  <select name="seats[STA]" id="seatsSTA">
    <option value="0">Choose one from below</option>
    <option value="1">1xTicket</option>
    <option value="2">2xTicket</option>
    <option value="3">3xTicket</option>
    <option value="4">4xTicket</option>
    <option value="5">5xTicket</option>
    <option value="6">6xTicket</option>
    <option value="7">7xTicket</option>
    <option value="8">8xTicket</option>
    <option value="9">9xTicket</option>
            </select>

我尝试使用正则表达式:

$staErr = "";
$seatsSTA = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["seatsSTA"])) {
    $staErr = "no match";
  } else {
    $seatsSTA = test_input($_POST["seatsSTA"]);
    // check if name only contains letters and whitespace
    if (preg_match("/\b1xTICKET\b/i",$seatsSTA)) {
      $staErr = "matches";
    }
  }
}

如果选择了任何票证选项(1xTicket,2xTicket ...),则应回显“ matches”,如果选择了其他任何选项,则应回显“ no match”(在这种情况下,它将仅是“ Choose”一从下面”)。

1 个答案:

答案 0 :(得分:1)

首先,您输入的名称不正确。您正在使用seats[STA]格式,在PHP中seatsSTA

第二,您的模式仅匹配数字1,例如/\b[1-9]xTICKET\b/i

,它应该匹配1-9之间的所有数字。