Come incorporare i video di YouTube in PHP?
-
03-07-2019 - |
Domanda
Qualcuno può darmi un'idea come possiamo mostrare o incorporare un video di YouTube se abbiamo solo l'URL o il codice di incorporamento?
Soluzione
Devi chiedere agli utenti di memorizzare il codice di 11 caratteri dal video di YouTube.
Ad es. http://www.youtube.com/watch?v=Ahg6qcgoay4
Il codice di undici caratteri è: Ahg6qcgoay4
Quindi prendi questo codice e lo inserisci nel tuo database. Quindi, ovunque tu voglia inserire il video di YouTube nella tua pagina, carica il personaggio dal database e inserisci il seguente codice: -
es. per Ahg6qcgoay4 sarà:
<object width="425" height="350" data="http://www.youtube.com/v/Ahg6qcgoay4" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/Ahg6qcgoay4" /></object>
Altri suggerimenti
Non archiviare il codice di incorporamento nel database: YouTube può modificare periodicamente il codice di incorporamento e i parametri URL. Ad esempio, il <object>
codice di incorporamento è stato ritirato a favore del <iframe>
codice di incorporamento. Dovresti analizzare l'id video dall'URL / codice di incorporamento (usando espressioni regolari, funzioni di analisi URL o parser HTML) e archiviarlo. Quindi visualizzalo utilizzando qualsiasi meccanismo attualmente offerto dall'API di YouTube.
Un esempio ingenuo di PHP per l'estrazione dell'ID video è il seguente:
<?php
preg_match(
'/[\\?\\&]v=([^\\?\\&]+)/',
'http://www.youtube.com/watch?v=OzHvVoUGTOM&feature=channel',
$matches
);
// $matches[1] should contain the youtube id
?>
Ti suggerisco di guardare questi articoli per capire cosa fare con questi ID:
Per creare il tuo lettore video YouTube:
Da entrambi gli URL di YouTube lunghi e brevi puoi ottenere l'incorporamento in questo modo:
$ytarray=explode("/", $videolink);
$ytendstring=end($ytarray);
$ytendarray=explode("?v=", $ytendstring);
$ytendstring=end($ytendarray);
$ytendarray=explode("&", $ytendstring);
$ytcode=$ytendarray[0];
echo "<iframe width=\"420\" height=\"315\" src=\"http://www.youtube.com/embed/$ytcode\" frameborder=\"0\" allowfullscreen></iframe>";
Spero che aiuti qualcuno
I tag <object>
e <embed>
sono obsoleti in base a HTML Youtube Video , è preferibile utilizzare il tag <iframe>
per farlo.
<iframe width="420" height="315"
src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
</iframe>
Affinché i tuoi utenti non passino tutta la loro vita a cercare l'id del video nei link per inserirlo nel campo del modulo, lascia che pubblichino il link del video che trovano su YouTube e puoi utilizzare la seguente regex per ottenere l'id video:
preg_match("/^(?:http(?:s)?:\/\/)?
(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|
(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);
Per ottenere l'ID video puoi recuperarlo $matches[1]
, questi corrisponderanno:
- youtube.com/v/vidid
- youtube.com/vi/vidid
- youtube.com/?v=vidid
- youtube.com/?vi=vidid
- youtube.com/watch?v=vidid
- youtube.com/watch?vi=vidid
- youtu.be/vidid
- youtube.com/embed/vidid
- http://youtube.com/v/vidid
- http://www.youtube.com/v/vidid
- https://www.youtube.com/v/vidid
- youtube.com/watch?v=vidid amp &; WTV WTV =
- http://www.youtube ? & .com / watch dev = inprogress amp; v = vidid amp &; feature = relativi
- https://m.youtube.com/watch?v=vidid
Parte di questa risposta è riferita dalla risposta di @ shawn in questa domanda .
Usa una regex per estrarre " ID video " dopo watch?v=
Memorizza l'id video in una variabile, chiamiamo questa variabile vid
Ottieni il codice di incorporamento da un video casuale, rimuovi l'ID del video dal codice di incorporamento e sostituiscilo con il v\=([\-\w]+)
che hai.
Non so come gestire regex in php, ma non dovrebbe essere troppo difficile
Ecco il codice di esempio in Python:
>>> ytlink = 'http://www.youtube.com/watch?v=7-dXUEbBz70'
>>> import re
>>> vid = re.findall( r'v\=([\-\w]+)', ytlink )[0]
>>> vid
'7-dXUEbBz70'
>>> print '''<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/%s&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/%s&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>''' % (vid,vid)
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/7-dXUEbBz70&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/7-dXUEbBz70&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
>>>
L'espressione regolare v=
acquisisce una (sotto) stringa di caratteri e trattini che viene dopo <=>
Ecco un po 'di codice che ho scritto per trasformare automaticamente gli URL in collegamenti e incorporare automaticamente tutti gli URL dei video di YouTube. L'ho realizzato per una chat room su cui sto lavorando e funziona abbastanza bene. Sono sicuro che funzionerà perfettamente per qualsiasi altro scopo, come ad esempio un blog.
Tutto quello che devi fare è chiamare la funzione " autolink () " e passagli la stringa da analizzare.
Ad esempio, includi la funzione di seguito e fai eco a questo codice.
`
echo '<div id="chat_message">'.autolink($string).'</div>';
/****************Function to include****************/
<?php
function autolink($string){
// force http: on www.
$string = str_ireplace( "www.", "http://www.", $string );
// eliminate duplicates after force
$string = str_ireplace( "http://http://www.", "http://www.", $string );
$string = str_ireplace( "https://http://www.", "https://www.", $string );
// The Regular Expression filter
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
// Check if there is a url in the text
$m = preg_match_all($reg_exUrl, $string, $match);
if ($m) {
$links=$match[0];
for ($j=0;$j<$m;$j++) {
if(substr($links[$j], 0, 18) == 'http://www.youtube'){
$string=str_replace($links[$j],'<a href="'.$links[$j].'" rel="nofollow" target="_blank">'.$links[$j].'</a>',$string).'<br /><iframe title="YouTube video player" class="youtube-player" type="text/html" width="320" height="185" src="http://www.youtube.com/embed/'.substr($links[$j], -11).'" frameborder="0" allowFullScreen></iframe><br />';
}else{
$string=str_replace($links[$j],'<a href="'.$links[$j].'" rel="nofollow" target="_blank">'.$links[$j].'</a>',$string);
}
}
}
return ($string);
}
?>
`
Se desideri caricare video a livello di codice, controlla API di dati di YouTube per PHP
Cercando questo stesso argomento ho trovato un altro metodo usando Javascript e API di Youtube
Direttamente da: http://code.google.com/apis/ajax / giochi / # simple_embed
Caricamento dell'API
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
Ed eseguendo il seguente codice javascript:
google.load("swfobject", "2.1");
function _run() {
var videoID = "ylLzyHk54Z0"
var params = { allowScriptAccess: "always" };
var atts = { id: "ytPlayer" };
// All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)
swfobject.embedSWF("http://www.youtube.com/v/" + videoID + "&enablejsapi=1&playerapiid=player1",
"videoDiv", "480", "295", "8", null, null, params, atts);
}
google.setOnLoadCallback(_run);
L'esempio completo si trova nella pagina precedentemente indicata http://code.google.com/ apis / ajax / parco giochi
Puoi farlo in modo semplice con Joomla. Consentitemi di assumere un esempio di URL di YouTube: https://www.youtube.com/watch?v=ndmXkyohT1M
<?php
$youtubeUrl = JUri::getInstance('https://www.youtube.com/watch?v=ndmXkyohT1M');
$videoId = $youtubeUrl->getVar('v'); ?>
<iframe id="ytplayer" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/<?php echo $videoId; ?>" frameborder="0"/>
Puoi semplicemente creare un modulo di input php per Varchar date
, assegnargli una lunghezza di varchar
diciamo 300. Quindi chiedi agli utenti di copiare e incollare il codice di incorporamento. Quando visualizzi i record, visualizzerai il streaming video.
luvboy,
Se capisco chiaramente, l'utente fornisce l'URL / il codice del video di Youtube e quindi quel video viene visualizzato sulla pagina.
Per questo, basta scrivere una pagina semplice, con layout ecc. Copia il codice di incorporamento del video da YouTube e incollalo nella tua pagina. Sostituisci il codice di incorporamento con un campo, ad esempio VideoID. Imposta questo VideoId sul codice fornito dal tuo utente.
modifica: vedi la risposta di Alec Smart.
Solo un piccolo aggiornamento della risposta di Alec Smart: poiché AS2 è obsoleto, è necessario "? version = 3" per far funzionare il suo esempio. Consulta il riferimento Youtube su Parametri player e player incorporati YouTube in " Selezione del contenuto da riprodurre " per dettagli.
In altre parole:
<object width="425" height="350" data="http://www.youtube.com/v/Ahg6qcgoay4?version=3" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/Ahg6qcgoay4?version=3" /></object>
Apparentemente, il riferimento di Youtube sopra fa come segue (l'incorporamento interno presumibilmente usato come fallback per i browser che non supportano ancora il tag oggetto):
<object width="640" height="390">
<param name="movie"
value="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&autoplay=1"></param>
<param name="allowScriptAccess" value="always"></param>
<embed src="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&autoplay=1"
type="application/x-shockwave-flash"
allowscriptaccess="always"
width="640" height="390"></embed>
</object>
O usando iframe (sostituisci http://example.com con il dominio del tuo sito):
<iframe id="ytplayer" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=1&origin=http://example.com" frameborder="0"/>
Questo Generatore di incorporamenti di YouTube risolve tutti i miei problemi con incorporamento di video.