Использование «preg_match» (или чего-то подобного) для соответствия параметрам «select» - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь написать валидацию, которая также проверяет, соответствует ли выбранная опция регулярному выражению. Есть 10 вариантов, только один из которых является неправильным.

Пока что я пытался использовать операторы if и else в сочетании с "preg_match" и "$ match", но я не могу заставить его работать для выбранных опций. Вот мой код и то, что я пытался до сих пор.

Мой выбор параметров в форме:

<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, ...), и должно отображаться «Нет совпадения», если выбран любой другой вариант (в этом случае это будет «Выбрать один из ниже»).

1 Ответ

1 голос
/ 09 октября 2019

Прежде всего, ваше введенное имя неверно. Вы используете seats[STA] в форме и seatsSTA в PHP.

Second Ваш шаблон соответствует только для номера 1, когда он должен соответствовать всем числам от 1 до 9, как это /\b[1-9]xTICKET\b/i

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...