我需要用php查找并选择文本中的所有youtube链接,以便用适当的嵌入代码替换它们,但是我似乎找不到办法。
1-链接的开始位置:
链接的开始位置可能在https://www.youtube.com/watch?v=<video_id>
和之间改变,https://youtu.be/<video_id>
而我认为strpos()
可以完成此工作,问题是...。
2-结束位置:
链接可能附加(或未附加)查询字符串,这使链接的长度未知,因此唯一的方法是在https://www.youtube.co....
或https://youtu.b...
与之相邻的下一个空白之间进行选择,该空白将是链接的结尾。
我需要用正确的YouTube嵌入代码替换链接。
知道如何选择链接吗?
试试这个正则表达式
(https:\/\/www\.youtube\.com\/.*?)(?:\s|$)|(https:\/\/youtu\.be\/.*?)(?:\s|$)
用法:
$re = '/(https:\/\/www\.youtube\.com\/.*?)(?:\s|$)|(https:\/\/youtu\.be\/.*?)(?:\s|$)/';
$str = 'abc https://www.youtube.com/watch?v=Dx5qFachd3A def https://youtu.be/Dx5qFachd3A ghi';
$embedStart = '<iframe width="560" height="315" src="';
$embedEnd = '" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
$str = preg_replace($re,$embedStart.'$0'.$embedEnd,$str);
echo $str;
您可以使用preg_replace将其替换为嵌入代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句