PHP найти URL-адрес YouTube для встраивания _match и _replace - PullRequest
0 голосов
/ 17 июня 2019

Невозможно понять, почему следующий код не работает.

Он принимает содержимое текстового файла (строку), заменяет URL-адрес YouTube (из строки), а затем вставляет его в другую строку, но яне получаю ответа.

// regex
$yt_pre = "/https?:\/\/(?:www)?\.youtu(?:\.be|be\.com)\/watch(?:\?(.*?)&|\?)v=([a-zA-Z0-9_\-]+)(\S*)/i";

// find
preg_match($yt_pre, $text, $yt_find);
$yt_loc = $yt_find[1];

// embed
$yt_rep = "<div class='youtube'><iframe src='https://www.youtube.com/embed/" . $yt_loc . "' frameborder='0' allowfullscreen class='youtube_iframe'></iframe></div>";

// replace
preg_replace($yt_pre, $yt_rep, $text);

1 Ответ

0 голосов
/ 17 июня 2019

Я предполагаю, что это выражение может работать для ссылок на YouTube, и я предположил, что у нас будет идентификатор с этим шаблоном (([A-Za-z0-9_-]{11})):

https?:\/\/(?:www\.)?youtu(?:be)?(?:\.com|\.be)\/(?:watch\?v=|embed\/watch\?feature=player_embedded&v=)?([A-Za-z0-9_-]{11})(.+)?

Демо

$re = '/https?:\/\/(?:www\.)?youtu(?:be)?(?:\.com|\.be)\/(?:watch\?v=|embed\/watch\?feature=player_embedded&v=)?([A-Za-z0-9_-]{11})(.+)?/m';
$str = 'http://www.youtube.com/watch?v=iwGFalTRHDA
http://www.youtube.com/watch?v=iwGFalTRHDA&feature=related
http://youtu.be/iwGFalTRHDA
http://youtu.be/n17B_uFF4cA
http://www.youtube.com/embed/watch?feature=player_embedded&v=r5nB9u4jjy4
http://www.youtube.com/watch?v=t-ZRX8984sc
http://youtu.be/t-ZRX8984sc';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

var_dump($matches);

Ссылка

...