Как преобразовать Vimeo URL для вставки, не отпуская текст вокруг него

Я создаю чат, и у меня есть функция, которая берет 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;

?>

Больше не работает

Как сделать так, чтобы текст оставался вокруг видео, и при этом отображать видео?

-1

Решение

Ваша функция в порядке, но проблема в том, как вы ее называете

замещать

$message = convertVimeo($message);

С

$message = preg_replace_callback('#https://vimeo.com/\d*#', function($message) {  return convertVimeo($message[0]);
}, $message);
0

Другие решения

Ответ: использовать preg_replace_callback()

Попробуй это :

$doConvert = function($url) {

return convertVimeo($url[0]);
};

$message = preg_replace_callback('#https://vimeo.com/\d*#', $doConvert, $message);

echo $message;

Скрипт заменит и применяет вам функцию convertVimeo для каждого шаблона url vimeo.

3

Быстрая функция для генерации встроенного 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;
}
1

Я написал здесь функцию комбинации ответов, чтобы сделать ее очень простой в использовании.
Работает только для простых ссылок 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;
}
0

мое решение для ссылки на 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;

}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector