by Guest » 15 Jan 2025, 17:00
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?
Ich habe diese Stackoverflow-Seite überprüft, um mein eigenes YouTube zu erstellen URL-Parser.
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
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.
[b]Fragen:[/b]
[list]
[*]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?
[/list]Ich habe diese Stackoverflow-Seite überprüft, um mein eigenes YouTube zu erstellen URL-Parser.
Dieser preg_match kann die Video-ID und die Startzeit extrahieren, kann aber nicht mit den vielen verschiedenen YouTube-URL-Formaten umgehen:
[code]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]
Dieses preg_match verarbeitet viele verschiedene YouTube-URLs (vielleicht alle möglichen?), extrahiert aber nicht die Startzeit:
[code]preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"'>]+)/", $url, $matches);
[/code]
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]preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"'>]+)(?:[&?\/]t=)?(\d*)/", $url, $matches);
[/code]
Der Code
[code]