我有一个数据库,其中youtube视频存储为iframe网址。我想要做的是使用一些基本的替换命令显示每个视频旁边的youtube缩略图。我想在php中运行一个自动查找内容的函数,去掉iframe标签并留下一个只有id的函数。
在第三个字段中我有代码所以:
echo $galleryitems[$i][2]
将返回
<iframe width="640" height="360" src="http://www.youtube.com/embed/scYj-bDEaKI?rel=0" frameborder="0" allowfullscreen></iframe>
我不确定是否有其他方法可以做到这一点,并且由于所有代码都相同,我想从代码中删除这些部分:
<iframe width="640" height="360" src="http://www.youtube.com/embed/
和
?rel=0" frameborder="0" allowfullscreen></iframe>`
我在想str_replace
就足够了?我最终想要的是一个函数$strLink = scYj-bDEaKI
(只是视频ID)
看了一下SO并尝试了这个:
$galleryitems[$i][2] = preg_replace('/<iframe[^>]*>(.*?)<\/iframe>/', '', $strLink, 1);
echo $strLink;
但没有回复。眼睛转过身,感谢您的帮助!
答案 0 :(得分:1)
对于PHP RegEx语法,您可以参考
http://php.net/manual/en/reference.pcre.pattern.syntax.php
$s = '<iframe width="640" height="360" src="http://www.youtube.com/embed/scYj-bDEaKI?rel=0" frameborder="0" allowfullscreen></iframe>';
echo preg_replace('/<iframe.* src="http:\/\/www\.youtube\.com\/embed\/(.*?)\?.*<\/iframe>/', '$1', $s);
答案 1 :(得分:0)
请不要使用RegEx解析HTML。
$dom = new DOMDocument();
$dom->loadHTML($html);
$items = $dom->getElementsByTagName('iframe');
if ($items->length) {
$url = basename(parse_url($items->item(0)->getAttribute('src'), PHP_URL_PATH));
}