3 votes

Comment obtenir tous les iframe de YouTube à partir de HTML en utilisant regex

Je veux avoir tous les YouTube iframe J'utilise une expression rationnelle et je veux ajouter une étiquette spécifique à chaque enregistrement trouvé.

Par exemple <youtube-frame></youtube-frame> à iframe begeing et end.

Sortie nécessaire :

<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>

Mon 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>
';

Ce que j'ai essayé ?

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

4voto

CherryDT Points 4046

Essayez ça :

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

Cela utilise preg_replace et une expression rationnelle globale pour remplacer toutes les balises IFrame de YouTube (y compris leurs balises de fermeture) par <youtube-frame>$0</youtube-frame> donde $0 est la chaîne originale.

La regex pourrait théoriquement être simplifiée si vous êtes totalement sûr du format de votre entrée, mais je l'ai conçue pour être suffisamment robuste pour faire face à d'autres syntaxes telles que src=http://example.com o src = "http://example.com" etc. qui sont acceptés par les navigateurs de nos jours, et il ne correspond qu'aux sources sur *.youtube.com et non quelque chose comme myyoutubesite.com .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X