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

PHP-Programmierer chatten hier
Guest
 PHP Regex, um die YouTube-Video-ID und die Startzeit zu erhalten

Post by Guest »

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post