如何将vimeo url转换为嵌入而不放弃它周围的文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将vimeo url转换为嵌入而不放弃它周围的文本相关的知识,希望对你有一定的参考价值。
我正在创建一个聊天,我有一个功能,需要一个vimeo网址并将其转换为嵌入式视频,它的工作原理。问题是,当我向字符串添加任何其他文本时,它不起作用同时我想保留它周围的文本仍然将vimeo链接转换为嵌入视频
这是我的代码,可以将任何vimeo链接转换为嵌入式视频
<?php
function convertVimeo($url)
{
########################################################
//extract the ID
if(preg_match(
'///(www.)?vimeo.com/(d+)($|/)/',
$url,
$matches
))
{
//Si l'url de vimeo est trouve
//the ID of the Vimeo URL: 71673549
$id = $matches[2];
//set a custom width and height
$width = '640';
$height = '360';
//echo the embed code and wrap it in a class
return '<div class="videowrapper well"><iframe src="http://player.vimeo.com/video/'.$id.'?title=0&byline=0&portrait=0&badge=0&color=ffffff" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></div>';
}
//Fin de si l'url de vimeo est trouve
########################################################
}
//store the URL into a variable
$message = 'https://vimeo.com/33881199';
$message = convertVimeo($message);
echo $message;
?>
上面的代码完美无缺,但是当我这样做时
<?php
//store the URL into a variable
$message = 'Some text before https://vimeo.com/33881199 and text after ';
$message = convertVimeo($message);
echo $message;
?>
它不起作用了
如何使文字保持视频并显示视频?
答案
你的功能还可以,但你调用它的方法就是问题所在
更换
$message = convertVimeo($message);
同
$message = preg_replace_callback('#https://vimeo.com/d*#', function($message) { return convertVimeo($message[0]);
}, $message);
另一答案
答案是:使用preg_replace_callback()
试试这个 :
$doConvert = function($url) {
return convertVimeo($url[0]);
};
$message = preg_replace_callback('#https://vimeo.com/d*#', $doConvert, $message);
echo $message;
该脚本将替换并为每个模式url vimeo应用函数convertVimeo。
另一答案
用于生成嵌入URL的快速功能。
public function generateVideoEmbedUrl($url){
//This is a general function for generating an embed link of an FB/Vimeo/Youtube Video.
$finalUrl = '';
if(strpos($url, 'facebook.com/') !== false) {
//it is FB video
$finalUrl.='https://www.facebook.com/plugins/video.php?href='.rawurlencode($url).'&show_text=1&width=200';
}else if(strpos($url, 'vimeo.com/') !== false) {
//it is Vimeo video
$videoId = explode("vimeo.com/",$url)[1];
if(strpos($videoId, '&') !== false){
$videoId = explode("&",$videoId)[0];
}
$finalUrl.='https://player.vimeo.com/video/'.$videoId;
}else if(strpos($url, 'youtube.com/') !== false) {
//it is Youtube video
$videoId = explode("v=",$url)[1];
if(strpos($videoId, '&') !== false){
$videoId = explode("&",$videoId)[0];
}
$finalUrl.='https://www.youtube.com/embed/'.$videoId;
}else if(strpos($url, 'youtu.be/') !== false){
//it is Youtube video
$videoId = explode("youtu.be/",$url)[1];
if(strpos($videoId, '&') !== false){
$videoId = explode("&",$videoId)[0];
}
$finalUrl.='https://www.youtube.com/embed/'.$videoId;
}else{
//Enter valid video URL
}
return $finalUrl;
}
另一答案
我在这里编写了一个答案组合的功能,使其使用起来非常简单。仅适用于普通vimeo链接,但如果这漂浮你的船:
public function linkURLs( $text )
{
$text = preg_replace('#https?://(www.)?vimeo.com/(d+)#',
'<iframe class="videoFrame" src="//player.vimeo.com/video/$2" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>',
$text);
return $text;
}
另一答案
我的youtube链接和vimeo链接的解决方案,我感觉还可以
function convertLinkToEmbed($videoLink, $width, $height)
{
$embed = '';
if (preg_match('/https://(?:www.)?(youtube).com/watch\?v=(.*?)/', $videoLink))
$embed = preg_replace("/s*[a-zA-Z//:.]*youtube.com/watch?v=([a-zA-Z0-9-_]+)([a-zA-Z0-9/*-\_?&;\%=.]*)/i", "<iframe width="" . $width . "" height="" . $height . "" src="//www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>", $videoLink);
if (preg_match('/https://vimeo.com/(\d+)/', $videoLink, $regs))
$embed = '<iframe src="http://player.vimeo.com/video/' . $regs[1] . '?title=0&byline=0&portrait=0&badge=0&color=ffffff" width="' . $width . '" height="' . $height . '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
return $embed;
}
以上是关于如何将vimeo url转换为嵌入而不放弃它周围的文本的主要内容,如果未能解决你的问题,请参考以下文章
使用自定义字段从 Youtube 或 Vimeo 嵌入背景视频
如何在 ruby on rails 中显示 vimeo 和 youtube 嵌入链接的缩略图?