youtube preg_替换不同的链接

youtube preg_替换不同的链接,youtube,preg-replace,Youtube,Preg Replace,我做了这个代码来替换youtube代码,但是我遇到了一个问题,这是我的代码 // replace video Youtube to thumbnail $string = array('http://youtube.com/watch?v=slBEtqC_JsI', 'https://youtu.be/bOxza0rLv1o'); //fix the '/' in the end of url $string = trim($string, '/'); $search =

我做了这个代码来替换youtube代码,但是我遇到了一个问题,这是我的代码

// replace video Youtube to thumbnail       
$string     = array('http://youtube.com/watch?v=slBEtqC_JsI', 'https://youtu.be/bOxza0rLv1o');
//fix the '/' in the end of url
$string = trim($string, '/');
$search = array();
$search[0] = '~(?:https://(?:www\.)?youtube\.com\/watch\?v=)?([a-zA-Z0-9_\-+?:]+)~';
$search[1] = '~(?:https://(?:www\.)?youtu\.be\/)?([a-zA-Z0-9_\-+?:]+)~';
$replace = array();
$replace[1]    = 'https://i.ytimg.com/vi/$1/hqdefault.jpg';   
$replace[0]   = 'https://i.ytimg.com/vi/$1/hqdefault.jpg'; 
$soc_youtube = preg_replace($search,$replace,$string);
代码不会更改字符串,输出将是

https://i.ytimg.com/vi/https:/hqdefault.jpg//https://i.ytimg.com/vi/i/hqdefault.jpg.https://i.ytimg.com/vi/ytimg/hqdefault.jpg.https://i.ytimg.com/vi/com/hqdefault.jpg/https://i.ytimg.com/vi/vi/hqdefault.jpg/https://i.ytimg.com/vi/https:/hqdefault.jpg/https://i.ytimg.com/vi/hqdefault/hqdefault.jpg.https://i.ytimg.com/vi/jpg/hqdefault.jpg//https://i.ytimg.com/vi/https:/hqdefault.jpg//https://i.ytimg.com/vi/i/hqdefault.jpg.https://i.ytimg.com/vi/ytimg/hqdefault.jpg.https://i.ytimg.com/vi/com/hqdefault.jpg/https://i.ytimg.com/vi/vi/hqdefault.jpg/https://i.ytimg.com/vi/youtu/hqdefault.jpg/https://i.ytimg.com/vi/hqdefault/hqdefault.jpg.https://i.ytimg.com/vi/jpg/hqdefault.jpg.https://i.ytimg.com/vi/https:/hqdefault.jpg//https://i.ytimg.com/vi/i/hqdefault.jpg.https://i.ytimg.com/vi/ytimg/hqdefault.jpg.https://i.ytimg.com/vi/com/hqdefault.jpg/https://i.ytimg.com/vi/vi/hqdefault.jpg/https://i.ytimg.com/vi/be/hqdefault.jpg/https://i.ytimg.com/vi/hqdefault/hqdefault.jpg.https://i.ytimg.com/vi/jpg/hqdefault.jpg/https://i.ytimg.com/vi/https:/hqdefault.jpg//https://i.ytimg.com/vi/i/hqdefault.jpg.https://i.ytimg.com/vi/ytimg/hqdefault.jpg.https://i.ytimg.com/vi/com/hqdefault.jpg/https://i.ytimg.com/vi/vi/hqdefault.jpg/https://i.ytimg.com/vi/bOxza0rLv1o/hqdefault.jpg/https://i.ytimg.com/vi/hqdefault/hqdefault.jpg.https://i.ytimg.com/vi/jpg/hqdefault.jpg);
有人能帮我吗? 感谢您的帮助

您可以使用

'~(?:https?://(?:www\.)?youtu(?:be\.com/watch\?v=|\.be/))?([a-zA-Z0-9_\-+?:]+)/?~'
看。图案详情:

  • (?:
    -第一个备选组的开始:
    • https?:/(?:www\)?youtu
      -
      https://
      https://
      ,然后是可选的
      www.
      子字符串,然后是
      youtu
      子字符串
    • (?:
      -第二个备选组的开始:
      • be\.com/watch\?v=
        -
        be.com/watch?v=
        子字符串
      • |
        -或
      • \.be/
        -
        .be/
        子字符串
    • -第二个备选组结束
  • )?
    -1或0次
  • ([a-zA-Z0-9\-+?:]+)
    -第1组:一个或多个单词,
    -
    +
    字符
  • /?
    -可选的
    /
见:

输出:

Array
(
    [0] => https://i.ytimg.com/vi/slBEtqC_JsI/hqdefault.jpg
    [1] => https://i.ytimg.com/vi/bOxza0rLv1o/hqdefault.jpg
    [2] => https://i.ytimg.com/vi/slBEtqC_JSJ/hqdefault.jpg
)
看见
Array
(
    [0] => https://i.ytimg.com/vi/slBEtqC_JsI/hqdefault.jpg
    [1] => https://i.ytimg.com/vi/bOxza0rLv1o/hqdefault.jpg
    [2] => https://i.ytimg.com/vi/slBEtqC_JSJ/hqdefault.jpg
)