过滤掉PHP中的元素

时间:2013-02-20 14:32:14

标签: php string

我有一个数据库,其中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;

但没有回复。眼睛转过身,感谢您的帮助!

2 个答案:

答案 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));
}

示例in codepad