无法弄清楚以下代码为何不起作用。
它需要文本文件内容(字符串),替换youtube url(来自字符串),然后将其嵌入其他字符串,但是我没有任何反应。
// 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);
答案 0 :(得分:0)
我的猜测是,该表达式可能适用于youtube链接,我已经假定我们使用具有此模式(([A-Za-z0-9_-]{11})
)的ID:
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);