У меня есть это регулярное выражение для получения идентификатора видео на YouTube:
(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+
Я получаю это оттуда: регулярное выражение для анализа youtube yid
Проблема в том, что я получаю предупреждение preg_match() Unknown modifier '['
.
Я знаю, что мне нужно заключить разделители регулярных выражений, но я не знаю, как это сделать.
Любая помощь?
Попробуйте следующее:
<?php $str = "http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I"; $pattern = '#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#'; preg_match($pattern, $str, $matches); print_r($matches); ?>
Заметьте, я использую здесь #
как разделитель просто потому, что регулярное выражение выше содержит косые черты и сбрасывание их, что делает выражение более трудным для чтения. Это очищает его всего на несколько пикселей.
Мой RegEx был следующим:
[A-Za-Z] {3} \ d {4} [A-Za-Z] {4}
И я сказал следующее:
if (!preg_match("[A-Za-z]{3}\d{4}[A-Za-z]{4}", trim($search_query))) { return false; }
Но это дало мне следующее предупреждение:
Возникла ошибка PHP
Серьезность: Предупреждающее сообщение: preg_match (): Неизвестный модификатор '{' Имя файла: models / room_reservation_model.php Номер строки: 61
Затем я заметил в некоторых из них следующую ссылку, что они поместили шаблон RegEx в два "/" следующим образом:
$name = test_input($_POST["name"]); if (!preg_match("/^[a-zA-Z ]*$/",$name)) { $nameErr = "Only letters and white space allowed"; }
Поэтому я также помещал эти два «/» до и после моего шаблона RgeEx следующим образом: проблема решена:
if (!preg_match("/[A-Za-z]{3}\d{4}[A-Za-z]{4}/", trim($search_query))) { return false; }