2010-12-12 12 views
0

Ich mache einen BBCode für Youtube-Videos.User kann ein Video als BBCode zB wie [youtube] http://www.youtube.com/watch?v=ihK2pPcDSHM [/ Youtube]. Als nächstes wird es in HTML-Code konvertieren. Aber statt Video möchte ich auch das Bild des Videos zeigen. Also ich mache es wie folgt aus:Wie substr bei regexp von preg zu verwenden ersetzen

$string = preg_replace("~\[yt]http://www.youtube.com/watch\?v=(.*)\[/yt]~Uis","<img src=\"http://img.youtube.com/vi/\\1/0.jpg\" />", $string); 

es das Bild zeigt, aber wenn jemand eine URL wie bringt:

http://www.youtube.com/watch?v=ihK2pPcDSHM&feature=channel 

Dann wird die Bild-URL wird http://img.youtube.com/vi/ihK2pPcDSHM&feature=channel1/0.jpg, die auf ein gültiges Bild führt nicht. Ich versuche, die \\1 zu ".substr('\\1', 0,11)." zu ändern, aber es hat kein Ergebnis.

Irgendwelche Vorschläge, um das zu lösen? Vielen Dank!

Antwort

0

Versuchen Sie ein anderes Muster wie:

~\[yt]http://www\.youtube\.com/watch\?v=([a-z0-9-_]+).*?\[/yt]~is 
+0

Dank, aber das führte nur einen Brief zurück. So wurde die URL des Bildes http://img.youtube.com/vi/l/0.jpg –

+0

@ user539649: Sind Sie sicher, dass Sie eine Übereinstimmung zwischen Groß- und Kleinschreibung treffen? – Gumbo

+0

hm..was meinst du? : S ich möchte nur das Bild zeigen. Habe ich am Code etwas falsch gemacht? –

0

Deine Freunde einfach Ihrem regex auf dem ersten & Charakter zu stoppen:

$string = preg_replace("~\[yt]http://www.youtube.com/watch\?v=([^\\&]*)\[/yt]~Uis","<img src=\"http://img.youtube.com/vi/\\1/0.jpg\" />", $string); 
+0

Danke, aber jetzt ersetzt es es nicht. Es zeigt den BBCode, ohne ihn zu ersetzen :( –

+0

Die Anzahl der Backslashes könnte falsch sein, versuchen Sie die Backslashes innerhalb '[^ \\ &]' loszuwerden. – moeffju