PHP Regex, um die YouTube-Video-ID und die Startzeit zu erhalten
Posted: 19 Jan 2025, 20:50
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:
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:
Dieses preg_match verarbeitet viele verschiedene YouTube-URLs (vielleicht alle möglichen?), extrahiert aber nicht die Startzeit:
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:
Der Code
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?
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);
Code: Select all
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"'>]+)/", $url, $matches);
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);
Code: Select all