Beitrag von SCbets (145 Beiträge) am Donnerstag, 22.März.2007, 20:01.
[CODE HELP] suchen & ersetzen mit XYZ =~ s/
Ich möchte gerne das YouTube Videos innhalb von Text erkannt und als embed gezeigt werden. sodas man nur die "http://www.youtube.com/watch?v=" mit der video nummer kennen muss.
Die url muss gesplitted und gewandelt werden zu "http://www.youtube.com/v/" und anschließend ein embed generiert werden.
DB:
http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/MyTube/main&cmd=list&range=0,20&cmd=all&Id=1
template:
http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/MyTube/test&vid=1
code:
<loop db=main Id==$vid code=perl>
$URL_2=$URL;
$URL_2=substr($URL_2, 0, 31);
$URL_3=$URL;
$URL_3=substr($URL_3, 31, 15);
########ab hier läuft was falsch help ################
#$URL =~ s/http\://www.youtube.com/watch?v=\<embed src='http://www.youtube.com/v/$URL_3' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'\>\</embed\>/gi;
#out convert_br($URL)." ";
######################################################
out"<p>1. $URL<p>";
out"2. $URL_2<p>";
out"3. $URL_3<p>";
out"<object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/$URL_3'></param><param name='wmode' value='transparent'></param><embed src='http://www.youtube.com/v/$URL_3' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'></embed></object>";
out"<p>";
</loop>
wer kann mir auf die sprünge helfen? thx :-)
Antworten
Beitrag von Ulf (144 Beiträge) am Freitag, 23.März.2007, 11:24.
Re: mal genauer ?
haut doch hin - ??
was willst Du ??
Antworten
Beitrag von SCbets (145 Beiträge) am Freitag, 23.März.2007, 13:40.
Re: mal genauer ?
Antworten
Beitrag von Ulf (144 Beiträge) am Freitag, 23.März.2007, 16:51.
Re: mal genauer ?
immer noch nicht begriffen was du willst, sollen die alle aus der Datenbank angezeigt werden oder wie ???
was ist mit Smilies ???
was willst du ??
schreib!! :-)
Antworten
Beitrag von SCbets (145 Beiträge) am Freitag, 23.März.2007, 21:17.
Re: mal genauer ?
ok ein beispiel bildlich in code für smilies:
[code]
$linkdevil = "http://www.baseportal.de/files/MyPortal/devil.gif";
$linksmile = "http://www.baseportal.de/files/MyPortal/smile.gif";
$linkfrown = "http://www.baseportal.de/files/MyPortal/frown.gif";
$linkfrusty = "http://www.baseportal.de/files/MyPortal/frusty.gif";
$linkpuh2 = "http://www.baseportal.de/files/MyPortal/puh2.gif";
$linkpukey = "http://www.baseportal.de/files/MyPortal/pukey.gif";
$linkkwijl = "http://www.baseportal.de/files/MyPortal/kwijl.gif";
$linkyummie = "http://www.baseportal.de/files/MyPortal/yummie.gif";
$linkwink = "http://www.baseportal.de/files/MyPortal/wink.gif";
$linkloveit = "http://www.baseportal.de/files/MyPortal/loveit.gif";
$linkclown = "http://www.baseportal.de/files/MyPortal/clown.gif";
$linkpuh = "http://www.baseportal.de/files/MyPortal/puh.gif";
$linkrc5 = "http://www.baseportal.de/files/MyPortal/rc5.gif";
$linkcool = "http://www.baseportal.de/files/MyPortal/cool.gif";
$linkconfused = "http://www.baseportal.de/files/MyPortal/confused.gif";
$linksleepey = "http://www.baseportal.de/files/MyPortal/sleepey.gif";
$linksadley = "http://www.baseportal.de/files/MyPortal/sadley.gif";
$linkshiny = "http://www.baseportal.de/files/MyPortal/shiny.gif";
$linksleephappy = "http://www.baseportal.de/files/MyPortal/sleephappy.gif";
$Text=~ s/<br>/\n/gi;
###### die if anfrage dient nur um die smilies ausgabe für nur gewisse foren zu erlauben######
if ($Forum_nr eq "0" or $Forum_nr eq "1" or $Forum_nr eq "5" or $Forum_nr eq "6")
{
### Umwandlung der Smilies in gifs ###
$Text =~ s/\:F/\<img src=$linkfrusty\>/g;
$Text =~ s/\>\:\)/\<img src=$linkdevil\>/g;
$Text =~ s/\:\)/\<img src=$linksmile\>/g;
$Text =~ s/\:\(/\<img src=$linkfrown\>/g;
$Text =~ s/\:P/\<img src=$linkpuh2\>/g;
$Text =~ s/\:r/\<img src=$linkpukey>/g;
$Text =~ s/\:9\~/\<img src=$linkkwijl\>/g;
$Text =~ s/\:9/\<img src=$linkyummie\>/g;
$Text =~ s/\;\)/\<img src=$linkwink\>/g;
$Text =~ s/\:7/\<img src=$linkloveit\>/g;
### Umwandlung der Smilies in gifs ende ###
out convert_br($Text)." ";
}
else
{
out convert_br(convert_links($Text))." ";
}
[/code]
was das tut ist jetzt verstanden oder?
so und jetzt stell dir einfach mal vor ich möchte eine youtube URL
automatisch in ein embed umwandeln aber auch nur wenn jemand innhalb des textes im meinem fall $URL (wird geändert) auch einen direkt View ULR zu youtube posted.
die url zu wandeln damit es im embed auch funktioniert habe ich ja schonmal raus, nur das embed generieren aufgrund der geposteten URL das innerhalb des textes steht macht mir schwierigkeiten.
$URL_2=$URL;
$URL_2=substr($URL_2, 0, 31);
$URL_3=$URL;
$URL_3=substr($URL_3, 31, 15);
$findURL="http\:\/\/www.youtube.com\/watch\?v\=";
$replaceURL="http://www.youtube.com/v/";
$URL_4=$URL;
#$URL_4 =~ s/$findURL/\<embed src\='http\:\/\/www.youtube.com\/v\/$URL_3' type\='application\/x\-shockwave\-flash' wmode\='transparent' width\='425' height\='350'\>\<\/embed\>/g;
#$URL_2 =~ s/http\:\/\/www.youtube.com\/watch?v\=/\<embed src\='http\:\/\/www.youtube.com\/v\/$URL_3' type\='application\/x\-shockwave\-flash' wmode\='transparent' width\='425' height\='350'\>\<\/embed\>/g;
Antworten
Beitrag von SCbets (145 Beiträge) am Freitag, 23.März.2007, 21:40.
Re: mal genauer noch simpler?
worum es geht!
hier eine Youtube copy and paste URL:
http://www.youtube.com/watch?v=iSolJl122rc
Hier eine gebrauchbare embed Url:
http://www.youtube.com/v/iSolJl122rc
wen mein code funktionieren würde und in diesem forum für die db variable $Text plaziert werden würde, würdest du anstatt der 1sten
ein youtube embed sehen und du könntes ein Video kucken, ohne gleich das gesamte embed von youtub zu copie und pasten.
Antworten
Beitrag von Pouraga (1396 Beiträge) am Samstag, 24.März.2007, 01:08.
Re: mal genauer noch simpler?
Was geht denn jetzt nicht, bzw. wo ist das Problem?
Antworten
Beitrag von SCbets (145 Beiträge) am Samstag, 24.März.2007, 12:07.
Re: mal genauer noch simpler?
Antworten
Beitrag von SCbets (145 Beiträge) am Samstag, 24.März.2007, 12:18.
Re: mal genauer als $Text feld ausgabe?
<loop db=main Id==$vid code=perl>
$Text_2=$Text;
$Text_2=substr($Text_2, 0, 31);
$Text_3=$Text;
$Text_3=substr($Text_3, 31, 15);
$findURL="http\:\/\/www.youtube.com\/watch\?v\=";
$replaceURL="http://www.youtube.com/v/";
$Text_4=$Text;
##### Test wandeln 1#######
$Text_4 =~ s/$findURL/\<embed src\='http\:\/\/www.youtube.com\/v\/$Text_3' type\='application\/x\-shockwave\-flash' wmode\='transparent' width\='425' height\='350'\>\<\/embed\>/g;
###################
############## Test wandeln 2 ###############
$Text_2 =~ s/http\:\/\/www.youtube.com\/watch?v\=/\<embed src\='http\:\/\/www.youtube.com\/v\/$Text_3' type\='application\/x\-shockwave\-flash' wmode\='transparent' width\='425' height\='350'\>\<\/embed\>/g;
##### test out 1 ##########
out convert_quote(URL_2)." ";
##### test out 2 ##########
out convert_quote(URL_4)." ";
###### Url im text output gespittet und gewandel
out"<p>1. $Text<p>";
out"2. $Text_2<p>";
out"3. $Text_3<p>";
out"4. $Text_4<p>";
out"5. $replaceURL$Text_3<p>";
# standart embed output
#out"<embed src='http://www.youtube.com/v/$Text_3' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'></embed>";
#out"<p>";
</loop>
Antworten
Beitrag von Pouraga (1396 Beiträge) am Montag, 26.März.2007, 11:27.
Re: mal genauer als $Text feld ausgabe?
Also nach dem ganzen Zeug, eigentlich ist deine Frage?:
Ich möchte z.B:
http://www.youtube.com/watch?v=0815
innerhalb eines Strings ($Text) finden
und gegen
<embed src='http://www.youtube.com/v/0815' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'></embed>
ersetzen.
Wie kann ich das mit Regex lösen?
Antwort:
$Emb="<embed src='http://www.youtube.com/v/%s' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'></embed>";
$Text =~ s#http\://www.youtube.com/watch\?v\=([0-9]+)#sprintf($Emb,$1)#ge;
Antworten
Beitrag von SCbets (145 Beiträge) am Montag, 26.März.2007, 13:44.
Re: soweit thx dennoch habe ich noch eine frage dazu?
Antworten
Beitrag von Pouraga (1396 Beiträge) am Montag, 26.März.2007, 16:29.
Re: soweit thx dennoch habe ich noch eine frage dazu?
dann nehme nicht [0-9]+ sondern \w+ als Suchmuster
an sprintf liegt es mit Sicherheit nicht
Antworten
Beitrag von SCbets (145 Beiträge) am Dienstag, 27.März.2007, 13:01.
Re: Danke/thx :-)
vielen dank für deine hilfe, es hat mir gut weitergeholfen!
dave
Antworten