2016-07-20 6 views
0

In einem Shout/Post-Bereich meiner Website erlaube ich Nutzern, YouTube-URLs mit dem folgenden regulären Ausdruck und preg_replace zu posten. Dies funktioniert nur, wenn die YouTube-URL zusätzliche Variablen wie eine Startzeit enthält. Ich habe viel über Google und StackOverflow recherchiert, kann aber keine Arbeitsbeispiele finden.Preg_Replace YouTube-URL mit oder ohne Startzeitvariable

Ich habe auch versucht preg_match, um sowohl die Video-ID und Startzeit zu ziehen und dann preg_replace die URL mit den Variablen aus der preg_match, hatte aber auch keinen Erfolg damit.

Ein Beispiel für ein Video mit einer Startzeit ist: https://youtu.be/PZb9T-eTOcg?t=2m8s

Der reguläre Ausdruck unten in meinem Code würde vor dem Ersetzen ihm PZb9T-eTOcg t = 2m8s aus der URL ziehen.

Danke für Ihre Hilfe!

 $text = preg_replace('#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#','<br /><div class="cover overlay hover" style="height: 240px;"><img src="https://img.youtube.com/vi/$1/0.jpg" alt="music" class="img-responsive"><a title="YouTube Video" href="https://www.youtube.com/embed/$1?autoplay=1" class="overlay overlay-full overlay-hover overlay-bg-black video" style="height: 240px;"><span class="v-center"><span class="btn btn-lg btn-circle btn-white"><i class="fa fa-play"></i></span></span></a></div>', $text); 

Antwort

0

Verwenden Sie stattdessen parse_url().

Die $result dieser Funktion, können Sie $result['path'] und $result['query'] erhalten.

Dann können Sie explode('&', $qs) verwenden, um Querystring-Parameter von $result['query'] zu trennen.

Schließlich können Sie wieder eine Schleife verwenden & explode('=', $qsp), dann switch() Aktionen für jeden Abfragezeichenfolgenparameter ausführen.