Php 如何将嵌入代码附加到youtube锚定链接
我使用此代码使URL可以作为论坛帖子中的锚链接单击Php 如何将嵌入代码附加到youtube锚定链接,php,regex,youtube,preg-replace,Php,Regex,Youtube,Preg Replace,我使用此代码使URL可以作为论坛帖子中的锚链接单击 function makelink($str) { $str = preg_replace_callback('/((((http)(s)?:\/\/)|www\.)[-0-9æøåa-zA-Z?-??-?\(\)%_+\.~#?&;:@\/\/=]+)(?<!\.)/i', function($matches) { if (strtolower(substr($matches[0], 0 , 4)) =
function makelink($str) {
$str = preg_replace_callback('/((((http)(s)?:\/\/)|www\.)[-0-9æøåa-zA-Z?-??-?\(\)%_+\.~#?&;:@\/\/=]+)(?<!\.)/i', function($matches) {
if (strtolower(substr($matches[0], 0 , 4)) == 'www.') {
$matches[0] = 'http://' . $matches[0];
}
return '<a href="'.$matches[0].'" title="link" rel="noreferrer">'.$matches[0].'</a>';
}, $str);
return trim($str);
}
函数makelink($str){
$str=preg\u replace\u callback('/((http)(s):\/\/)\124; www\.[-0-9æåa-zA-Z?-?\(\)%\+.~+&;:@\/=]+)(?
我如何制作一些代码来替换生成的锚(如果是youtube链接):
为此:
<a href="https://www.youtube.com/watch?v=LOLAy72Tv24" title="link" rel="noreferrer">https://www.youtube.com/watch?v=LOLAy72Tv24</a>
<br />
<iframe class="youtube" width="350" height="250" src="https://www.youtube.com/embed/LOLAy72Tv24/" allowfullscreen></iframe>
因此,它只需要获取视频id,并在原始链接下插入嵌入代码,同时将两者一起输出。以下是我建议的解决方案:
函数makelink($str){
$pattern='/(((http)(s):\/\/)(www\.)[-0-9æåa-zA-Z?-?(\)%\+.~\?&;:@\/\/=]+)(?')。makeiFrame($matches[0]);
}
返回$html;
}美元/平方米);
返回修剪($str);
}
函数isYouTubeVideoUrl(字符串$url):bool
{
返回(parse_url($url,PHP_url_HOST)==“www.youtube.com”| | isYouTubeShortUrl($url))
&&strpos(parse_url($url,PHP_url_QUERY),'v=')!==false;
}
函数isYouTubeShortUrl(字符串$url):bool
{
返回parse_url($url,PHP_url_HOST)=='youtu.be';
}
函数makeiFrame(string$url):string{
$embedUrl=https://www.youtube.com/embed/“.getYouTubeVideoId($url)。”/;
返回“”;
}
函数getYouTubeVideoId(string$url):string
{
如果(isYouTubeShortUrl($url)){
preg_match('/[^\/]+$/',$url,$matches);
返回$matches[0];
}
预赛/(?用于确定url主机是否为YouTube,如果是,请附加您需要的内容。@El_Vanja谢谢。但我有点不知道如何编写替换/附加代码。链接/url位于文本中,它不是一个只有链接/url的静态字符串。这说明了这一点吗?除了添加代码之外,我没有更改您的makelink
函数t追加iframe
。它仍然负责从文本中提取url
s。在您的代码在文本中找到一个url
匹配项后,我的代码将继续工作。好的,谢谢,我很快就会查看它:)您好。它似乎工作正常,谢谢。但是如果url指向主网站youtube.com(没有视频,只需链接到youtube)它会触发一个偏移错误。有什么办法可以避免吗?也许是这样,如果有视频,它只会触发嵌入等id@mowgli我已经修改了代码来说明这一点(供将来的读者使用)。我还将函数从isyoutubeeurl
重命名为isYouTubeVideoUrl
,以更准确地反映它检查的内容。我唯一不知道的是,短URL是否可以是视频以外的内容(我查看了一个频道,但没有找到任何选项)。如果它证明了这一点,那么你也必须对此做出解释。
<a href="https://www.youtube.com/watch?v=LOLAy72Tv24" title="link" rel="noreferrer">https://www.youtube.com/watch?v=LOLAy72Tv24</a>
<br />
<iframe class="youtube" width="350" height="250" src="https://www.youtube.com/embed/LOLAy72Tv24/" allowfullscreen></iframe>