如何将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&amp;byline=0&amp;portrait=0&amp;badge=0&amp;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&amp;byline=0&amp;portrait=0&amp;badge=0&amp;color=ffffff" width="' . $width . '" height="' . $height . '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
        return $embed;

    }

以上是关于如何将vimeo url转换为嵌入而不放弃它周围的文本的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义字段从 Youtube 或 Vimeo 嵌入背景视频

动态添加/控制 vimeo 嵌入

如何在 ruby​​ on rails 中显示 vimeo 和 youtube 嵌入链接的缩略图?

如何将占位符图像添加到嵌入的 Vimeo 和 Youtube 视频中?

将 vimeo 视频限制为域级隐私不起作用

YouTube Vimeo 视频 ID 来自嵌入代码或来自带有 PHP 正则表达式 RegEx 的 URL