PHP Regex, um die YouTube-Video-ID und die Startzeit zu erhalten

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: PHP Regex, um die YouTube-Video-ID und die Startzeit zu erhalten

by Guest » 16 Jan 2025, 11:36

Ich musste die Video-ID und die Startzeit aus jeder Art von YouTube-URL extrahieren, die die Benutzer eingeben können. Ich habe eine funktionierende Lösung, aber sie ist nicht richtig.
Fragen:
  • Könnte Hat mir jemand geholfen, das preg_match-Muster zu korrigieren, um die in den Tests kommentierten URLs zu verarbeiten?
  • Gibt es eine andere Art von YouTube-URL?
UPDATE 16.01.2024: Es muss auch mit Playlists funktionieren
Ich habe diese Stackoverflow-Seite überprüft, um meinen eigenen YouTube-URL-Parser zu erstellen.
Dieser preg_match kann die Video-ID und die Startzeit extrahieren, kann aber nicht mit den vielen verschiedenen YouTube-URL-Formaten umgehen:

Code: Select all

preg_match("/[a-zA-Z\/\/:\.]*youtu(?:be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)(?:[&?\/]t=)?(\d*)(?:[a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i", $url, $matches);
Dieses preg_match verarbeitet viele verschiedene YouTube-URLs (vielleicht alle möglichen?), extrahiert aber nicht die Startzeit:

Code: Select all

preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"'>]+)/", $url, $matches);
Ich habe es geändert und es funktioniert bei mir, aber ich weiß, dass meine Änderung nicht richtig ist, weil ich das Ende der URL nicht richtig analysiere:

Code: Select all

preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"'>]+)(?:[&?\/]t=)?(\d*)/", $url, $matches);
Der Code

Top