preg_match () Неизвестный модификатор '[' help

У меня есть это регулярное выражение для получения идентификатора видео на YouTube:

(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+ 

Я получаю это оттуда: регулярное выражение для анализа youtube yid

Проблема в том, что я получаю предупреждение preg_match() Unknown modifier '[' .

Я знаю, что мне нужно заключить разделители регулярных выражений, но я не знаю, как это сделать.

Любая помощь?

Solutions Collecting From Web of "preg_match () Неизвестный модификатор '[' help"

Попробуйте следующее:

 <?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; }