我正在尝试编写验证,该验证也检查所选择的选项是否与正则表达式匹配。有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”一从下面”)。
答案 0 :(得分:1)
首先,您输入的名称不正确。您正在使用seats[STA]
格式,在PHP中seatsSTA
。
第二,您的模式仅匹配数字1,例如/\b[1-9]xTICKET\b/i