一尘不染

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

php

我使用此正则表达式获取YouTube视频ID:

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

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

我知道我必须将正则表达式定界符括起来,但是我不知道该怎么做。

有什么帮助吗?


阅读 268

收藏
2020-05-29

共1个答案

一尘不染

请尝试以下操作:

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

请注意,我#之所以在这里用作分隔符,是因为上面的正则表达式包含正斜杠,而转义它们会使表达式更难以阅读。这仅清理了几个像素。

2020-05-29