preg_match()未知的修饰符'['帮助

Jon*_*han 1 php regex

我有这个正则表达式来获取YouTube视频ID:

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

我从那里得到它:正则表达式解析youtube yid

问题是我得到preg_match() Unknown modifier '['警告.

我知道我必须附上正则表达式分隔符,但我不知道如何做到这一点.

有帮助吗?

ran*_*its 6

请尝试以下方法:

<?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);
?>
Run Code Online (Sandbox Code Playgroud)

注意,我在#这里使用作为分隔符只是因为上面的正则表达式包含正斜杠并且转义它们使得表达式更难以阅读.这只是几个像素清理它.