gpt4 book ai didi

php - 如何使用正则表达式从HTML获取所有YouTube iframe

转载 作者:行者123 更新时间:2023-12-03 05:21:09 31 4
gpt4 key购买 nike

我想使用正则表达式获取所有YouTube iframe,并想为找到的每个记录添加特定标签。

例如使用<youtube-frame></youtube-frame>进行iframe的开始和结束。

所需的输出:

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

我的代码
$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>
';

我尝试了什么?
$pattern = '/<iframe\.*src=\"//youtube"\.*/';
$iframeSrc = preg_match($pattern, $embed, $matches);
var_dump($iframeSrc);

最佳答案

试试这个:

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

这使用 preg_replace和全局正则表达式将所有YouTube IFrame标签(包括其结束标签)替换为 <youtube-frame>$0</youtube-frame>,其中 $0是原始字符串。

如果您完全确定输入格式,则理论上可以简化正则表达式,但是我将其设计为足够健壮,可以应付当今浏览器接受的其他语法,例如 src=http://example.comsrc = "http://example.com"等,并且仅匹配源在 *.youtube.com域上,而不是 myyoutubesite.com

关于php - 如何使用正则表达式从HTML获取所有YouTube iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37028561/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com