Youtube video link in PHP String and convert it into Embed Code?
埋め込みコード:
<iframe width="420" height="315" src="//www.youtube.com/embed/0GfCP5CWHO0" frameborder="0" allowfullscreen></iframe>
PHPコード/文字列:
<?php echo $post_details['description']; ?>
Youtubeリンク:
http://www.youtube.com/watch?v=0GfCP5CWHO0
これを試して:
preg_replace("/\s*[a-zA-Z\/\/:\.]*youtube.com\/watch\?v=([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i","<iframe width=\"420\" height=\"315\" src=\"//www.youtube.com/embed/$1\" frameborder=\"0\" allowfullscreen></iframe>",$post_details['description']);
YouTubeの短いURL形式も処理するためのJoranのソリューションの少しの強化:
function convertYoutube($string) {
return preg_replace(
"/\s*[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i",
"<iframe src=\"//www.youtube.com/embed/$2\" allowfullscreen></iframe>",
$string
);
}
この機能はオンラインでテストできます here
1つの動画には2種類のYouTubeリンクがあります:
例:
$link1 = 'https://www.youtube.com/watch?v=NVcpJZJ60Ao';
$link2 = 'https://www.youtu.be/NVcpJZJ60Ao';
この関数は両方を処理します:
function getYoutubeEmbedUrl($url)
{
$shortUrlRegex = '/youtu.be\/([a-zA-Z0-9_-]+)\??/i';
$longUrlRegex = '/youtube.com\/((?:embed)|(?:watch))((?:\?v\=)|(?:\/))([a-zA-Z0-9_-]+)/i';
if (preg_match($longUrlRegex, $url, $matches)) {
$youtube_id = $matches[count($matches) - 1];
}
if (preg_match($shortUrlRegex, $url, $matches)) {
$youtube_id = $matches[count($matches) - 1];
}
return 'https://www.youtube.com/embed/' . $youtube_id ;
}
$ link1または$ link2の出力は同じです:
$output1 = getYoutubeEmbedUrl($link1);
$output2 = getYoutubeEmbedUrl($link2);
// output for both: https://www.youtube.com/embed/NVcpJZJ60Ao
これで、iframeで出力を使用できます!
FB/vimeo/youtubeビデオの埋め込み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;
}
IDを取得するための安全で簡単な方法だと思います
これはちょっとした防弾法ですが、単にURL構造を使用することです。
function getYoutubeEmbedUrl($url){
$urlParts = explode('/', $url);
$vidid = explode( '&', str_replace('watch?v=', '', end($urlParts) ) );
return 'https://www.youtube.com/embed/' . $vidid[0] ;
}
私はこれが古いスレッドであることを知っていますが、この課題を抱えて支援を求めている人のために、PHP GitHubのクラス- Embera を見つけました。
基本的に、任意の文字列のYouTube URLを関連するiframe要素に変換するoembedライブラリ。私はそれを使用していますが、どこでも使用し続けます!
以下は、すべての種類のYouTube URLで機能します。
preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match);
$youtube_id = $match[1];
文字列がユーザー入力からのものである場合、またはanyで予測不可能な場合は、RegEx ... seriouslyの使用を忘れてください。ワームの缶が開かれます。
代わりに、HTMLパーサーを使用して、特定のルールとセレクターに基づいてURLを抽出してみてください。
私は主にColdFsuion/Javaを使用します。JSoupはこの種のことに驚くばかりであり、非常に簡単で安全です。
PHPでは、次のようなものを使用できるようです。
http://code.google.com/p/phpquery/
コードサンプルを提供したいのですが、PHP十分にわかりません。しかし、やってみてください。
マイキー。
まあ、あなたは最初にyoutubeのリンクを除外し、それらを配列に入れる必要があります。次に、非常に簡単なURLのビデオIDを見つける必要があります。次のスクリプトを使用します。
function getIDfromURL() {
var video_url = document.getElementById('url').value;
var video_id = video_url.split('v=')[1];
var ampersandPosition = video_id.indexOf('&');
if (ampersandPosition != -1) { video_id = video_id.substring(0, ampersandPosition); }
document.getElementById('url').value=video_id;
}
もちろん、PHP関数も使用できますが、ここではURLからIDを取得するためにJSを使用しました。
ビデオIDを使用すると、ビデオを埋め込むことができます;)
<?php
$url = 'https://www.youtube.com/watch?v=u9-kU7gfuFA';
preg_match('/[\\?\\&]v=([^\\?\\&]+)/', $url, $matches);
$id = $matches[1];
$width = '800px';
$height = '450px'; ?>
<iframe id="ytplayer" type="text/html" width="<?php echo $width ?>" height="<?php echo $height ?>"
src="https://www.youtube.com/embed/<?php echo $id ?>?rel=0&showinfo=0&color=white&iv_load_policy=3"
frameborder="0" allowfullscreen></iframe>