Embed video's met auto detectie voor fora

Door Toby hinloopen, 20 jaar geleden, 6.721x bekeken

Deze functie 'embed_video(url_naar_video)' zet een url naar een video om in een embed video van bijv. google video of youtube waarbij je zelf ook videosites kan toevoegen.

Installatie:
Plaats de code, bestaande uit 2 functies, in je script.
Indien er een filmpje gepost moet worden in HTML, roep je 'embed_video()' op met 1 variable met daarin de link naar de video.

Voorbeeld: embed_video("http://video.google.nl/videoplay?docid=-2526424474122738837&q=&hl=nl
");

De uitvoer van het voorbeeld zal een google video zijn. Omdat deze functie ontwikkeld is voor forums heeft deze enigsinds beveiliging ingebouwd waarbij er geen ongeldige tekens in mogen voorkomen.

Er worden op dit moment 6 videosites ondersteund:
Southpark Video - http://www.southparkstudios.com
Google Video - http://video.google.com
Youtube Video - http://www.youtube.com
Dailymotion Video - http://www.dailymotion.com
Veoh Video - http://www.veoh.com !Werkt niet in opera!
Myvideo Video - http://www.myvideo.nl

Werking script...:
Bij het oproepen van de functie maakt ie een variable aan: $code. Hierin moet een url naar een video staan zoals 'http://video.google.nl/videoplay?docid=-2526424474122738837&q=&hl=nl'.

Bovenaan de functie staan 6 arrays met daarin de informatie over iedere videowebsite. In iedere array staat:
array('naam','regex syntax met tekens die NIET in de video-CODE mogen staan','Soort opdrachtregel naar locatie van video-code.','detectie string. Domeinnaam aanbevolen, zoals \'youtube.com\'.','embed code. Op alle plekken waar de videocode hoort te staan zet je [%CODE] neer. Dit zal vervangen worden door een STR_REPLACE()'),

In al die array's zoekt ie of de 'detectie string' voorkomt in $code (url naar video).
Door alle array's te doorzoeken d.m.v. een foreach() loop. Indien de detectie-string voorkomt in de URL, gaat ie verder met het script. Zo niet, dan zoekt-ie in de volgende array. Indien er geen match is zal ie een fout returnen. Deze kan je makkelijk editen indien je de code doorleest.

LET OP: haal 'return' niet weg! 'return' stopt namelijk de functie! Indien je wilt dat ie ipv. een error helemaal niets return-t, kan je alle returns met error erachter vervangen door 'return false;'

Wanneer die verder gaat met het script omdat ie een match heeft, leest ie welke methode er gebruikt wordt om de video-code in te lezen.

Tot nu toe zijn er 3 methoden:
-GET=[variablenaam]: hierbij staat de code netjes in de url met een get method. Na ?blabla= dus...
-FOLDER=[nummer]: hierbij staat de code ergens in de URL tussen 2 slashes. Er is dus een map als naam voor een video. Voorbeeld: blabla.com/video/456435/; hierbij is '456435' een map (vandaar de methode naam 'FOLDER' en kan je deze code oproepen door FOLDER=2 als methode te gebruiken, waarbij de 2 staat dat het de 2 map is na het hoofddomein.
-AFTER=[string]/BEFORE=[string]/BEFORE2=[string]: In deze methode geef je op dat de code na (AFTER) de opgegeven [string] komt en eventueel VOOR 'BEFORE' OF voor 'BEFORE2' komt.

TIP: Indien de code voor of na het teken '?' of '&' komt, kan je dit invullen door de -zelfverzonnen- entities '[Q]' en '[AND]' waarbij deze aan het eind van de 'get()' functie vervangen wordt door '?' en/of '&' door een str_replace

Via 1 van die 3 methoden zal de code uit de URL gepikt worden. Nadat de code gevonden is, wordt er gecontroleer via REGEX of deze juist is. Wanneer er tekens in voorkomen die door de opgegeven regex syntax verboden zijn, zal ie een error returnen ipv. een video. Wanneer er geen ongeldige tekens voorkomen, zal-ie [%CODE] (in de embed-code) vervangen door de videocode en dat resultaat returnen.

De get() functie?

Deze functie wordt gebruikt in de GET methode om een URL in te lezen. Verder wordt deze ook gebruikt om de methodes te lezen. Deze functie dient dus niet aangepast te worden.

Zelf videosites toevoegen:
je kan zelf een videosite toevoegen door $embeds een extra array te geven met daarin de benodigde waarden.

Syntax: array('naam','regex syntax met tekens die NIET in de video-CODE mogen staan','Soort opdrachtregel naar locatie van video-code.','detectie string. Domeinnaam aanbevolen, zoals \'youtube.com\'.','embed code. Op alle plekken waar de videocode hoort te staan zet je [%CODE] neer. Dit zal vervangen worden door een STR_REPLACE()'),

Voorbeeld: zie huidige embeds.

Extra: bij geplaatste code staat debug AAN. Deze kan je uitzetten door $debug de waarde 0 te geven. Verder staan er bovenaan het script een kleine HTML form waarmee je de functie kan testen. Uiteraard kan je dat allemaal weghalen. Je hebt alleen de 2 functies nodig.


Wegens de klachten niveau verlaagt :P

Voorbeeld: http://www.levensweg.net/function.php

Gesponsorde koppelingen

PHP script bestanden

  1. embed-videos-met-auto-detectie-voor-fora

 

Er zijn 9 reacties op 'Embed videos met auto detectie voor fora'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Johan M
Johan M
20 jaar geleden
 
0 +1 -0 -1
Nog niet getest, maar heb zelf ook wel eens zo iets gemaakt voor YouTube en 123video. Het is dus misschien wel de moeite waard om http://123video.nl toe te voegen.
Ook is het misschien handig om een functie erbij de schrijven waarmee je plaatjes kan laten zien, zoals dat http://www.youtube.com/watch?v=Ie52zPunmNo bijvoorbeeld http://img.youtube.com/vi/Ie52zPunmNo/default.jpg wordt. Geen idee of dat ook voor de andere sites gaat werken.
Hopelijk kan je er wat mee,
grz. Johan.


20 jaar geleden
 
0 +1 -0 -1
Ik vind dit niet zo'n goed scriptje. Je kunt gewoon die hele url met een regex behandelen en daar de info uithalen. Jij gebruikt alleen een regex om te kijken of nummertje en / of letertjes in zitten. Dan gebruik je nog verdere troep (die ik niet ga uitpluizen) om de echte info te vinden.
Zie ook dit gedoe :-).
Edit:
@Marcel: Dan leer je toch Duits? Zo moeilijk is Duits niet. En bovendien kan je gewoon op download drukken, het zip bestand openen en de Engelse tekst lezen. Het maakt ook niet uit of het php script nou door een Duitser, een Nederlander of weet-ik-veel-wat-voor-nationaliteit is gemaakt. Het is gewoon php
Marcel
Marcel
20 jaar geleden
 
0 +1 -0 -1
da's duits
Noppes
Noppes
20 jaar geleden
 
0 +1 -0 -1
Niveau: Gevorderd ????
Je bedoeld: Niveau: Beginners met een klein plusje

PHP Versie: 5 ???? Opgeleukt php 3 zul je bedoelen

Voor de rest doe je er verstandiger aan op meer en duidelijkere comentaarblokken in je code op te nemen..

En hier ben ik ook niet over te spreken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(get($embed[2],"AFTER")!=false) // dat moet zijn !==
// en wat moet dit voorstellen

if(get($embed[2],"BEFORE")!=null) // daar zijn nu php functies voor beginnende met is_
?>


Efficient is het script ook niet dus kom je uit op: script -> prullenbak
Jacco Engel
Jacco Engel
20 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if(get($embed[2],'GET')!=false) //als locatie_code GET is...
        {
            if($debug==1)
            {

                echo get($embed[2],'GET').'='.get($code,get($embed[2],'GET')).' uit '.$code.'<br/>';
            }

                
            if(preg_replace($embed[1],'',get($code,get($embed[2],'GET')))==get($code,get($embed[2],'GET')))
            {

                return str_replace('[%CODE]',get($code,get($embed[2],'GET')),$embed[4]);
            }

            else
            {
                return 'Code bevat ongeldige tekens!<br/>';
            }
        }

?>

Zoek de verschillen :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if($debug==1) echo get($embed[2],"GET")."=".get($code,get($embed[2],"GET"))." uit ".$code."<br/>";;
    if(preg_replace($embed[1],"",get($code,get($embed[2],"GET")))==get($code,get($embed[2],"GET")))
        return str_replace("[%CODE]",get($code,get($embed[2],"GET")),$embed[4]);
    else
        return "Code bevat ongeldige tekens!<br/>";
    }

?>
Marien xD
Marien xD
20 jaar geleden
 
0 +1 -0 -1
Een erg rommelig script :( hier laat ik een leek nog niet naar kijken omdat deze dan gaat denken dat het een hoog niveau is... Zorg er gewoon voor dat je code overzichtelijk en netjes is. Leest makkelijker, debugged makkelijker.
Mit
mit
20 jaar geleden
 
0 +1 -0 -1
hi jongens zo een script bestaat al!
php director is de naam.
Dit is dan alleen voor youtube,dailymotion en google video.

Helaas worden er geen thumbnails aangemaakt voor dailymotion en google video.

Weet iemand hoe ik dit kan aanpassen in de script zelf?

bedankt
Toby hinloopen
toby hinloopen
20 jaar geleden
 
0 +1 -0 -1
Iig bedankt voor de reacties, heb een hoop geleert ervan.

1: plaats nooit een script onder een te hoog niveau op PHP-hulp. :P
2: code met regex! Veel makkelijker.

Zodra ik een nieuwe heb zal ik die online gooien.

Die zal een stukkie beter zijn dan deze :P

Ik ben ook nog lerende... dus :P
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Ki ma
ki ma
19 jaar geleden
 
0 +1 -0 -1
"geleerD"

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. embed-videos-met-auto-detectie-voor-fora

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.