So erhalten Sie alle YouTube-Iframes aus HTML mit Regex

Lesezeit: 2 Minuten

Benutzeravatar von Muhammad Hassaan
Muhammad Hassan

Ich möchte alle YouTube-Inhalte erhalten iframe Regex verwenden und jedem gefundenen Datensatz ein bestimmtes Tag hinzufügen möchten.

Zum Beispiel <youtube-frame></youtube-frame> Anfang und Ende des Iframes.

Benötigte Leistung:

<youtube-frame><iframe width="560" height="315" src="https://www.youtube.com/embed/vakfMRyjulw" frameborder="0" allowfullscreen></iframe></youtube-frame>

<youtube-frame><iframe width="560" height="315" src="https://www.youtube.com/embed/aDGWMlKPKDs" frameborder="0" allowfullscreen></iframe></youtube-frame>

Mein Code

$embed = '
<iframe width="560" height="315" src="https://www.youtube.com/embed/vakfMRyjulw" frameborder="0" allowfullscreen></iframe>

<iframe width="600" height="350" src="https://tune.pk/player/embed_player.php?vid=6508414&folderp2016/05/04/&width=600&height=350&autoplay=no" frameborder="0" allowfullscreen scrolling="no"></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/aDGWMlKPKDs" frameborder="0" allowfullscreen></iframe>

<iframe width="600" height="350" src="https://tune.pk/player/embed_player.php?vid=6508414&folder=2016/05/04/&width=600&height=350&autoplay=no" frameborder="0" allowfullscreen scrolling="no"></iframe>

<iframe width="600" height="350" src="https://tune.pk/player/embed_player.php?vid=6508414&folder=2016/05/04/&width=600&height=350&autoplay=no" frameborder="0" allowfullscreen scrolling="no"></iframe>
';

Was habe ich versucht?

$pattern = '/<iframe\.*src=\"//youtube"\.*/';
$iframeSrc = preg_match($pattern, $embed, $matches);
var_dump($iframeSrc);

  • Error_reporting ist keine Option für Sie? Warum denken Sie src=\"//youtube" würde passen src="https://www.youtube.… ?

    – mario

    4. Mai 2016 um 13:12 Uhr

  • Ich habe schon geantwortet, aber trotzdem: Was würde bei deiner Frage unten fehlen “Was habe ich probiert?” ist das Ergebnis des von Ihnen versuchten Codes (z. B. die Ausgabe von var_dump).

    – CherryDT

    4. Mai 2016 um 13:19 Uhr


Benutzeravatar von CherryDT
CherryDT

Versuche dies:

$iframeSrc = preg_replace('/<iframe[^>]*src\s*=\s*"?https?:\/\/[^\s"\/]*youtube.com(?:\/[^\s"]*)?"?[^>]*>.*?<\/iframe>/i', '<youtube-frame>$0</youtube-frame>', $embed);

Dies nutzt preg_replace und eine globale Regex, durch die alle YouTube-IFrame-Tags (einschließlich ihrer schließenden Tags) ersetzt werden <youtube-frame>$0</youtube-frame> Wo $0 ist die ursprüngliche Zeichenfolge.

Die Regex könnte theoretisch vereinfacht werden, wenn Sie sich über das Format Ihrer Eingabe absolut sicher sind, aber ich habe sie so entworfen, dass sie robust genug ist, um mit anderen Syntaxen wie z src=http://example.com oder src = "http://example.com" usw., die heutzutage von Browsern akzeptiert werden, und passt nur Quellen an *.youtube.com Domänen und nicht so etwas myyoutubesite.com.

  • Danke @CherryDT Könnten Sie bitte erklären, was gihier tun <\/iframe>/gi

    – Muhammad Hassan

    4. Mai 2016 um 13:42 Uhr


  • g macht es global, sodass es mehrmals übereinstimmt (andernfalls würde es nur einmal plus alle Teilübereinstimmungen übereinstimmen), i macht es case-insensitive, weil <IFRAME> ist auch eine gültige Möglichkeit, einen IFrame zu definieren, wie es wäre <iFrAmE>.

    – CherryDT

    4. Mai 2016 um 13:44 Uhr

1446350cookie-checkSo erhalten Sie alle YouTube-Iframes aus HTML mit Regex

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy