0

我想从 HTML 中删除除 YouTube 之外的所有 iframe。

我已经尝试使用带有插入符号的代码来排除 YouTube 关键字,但它没有用。

$search[] = '@<iframe[^(youtube)]*?>.*?</iframe>@si';
$text = preg_replace($search, '', $document);
4

1 回答 1

0

由于谷歌搜索php strip tags except youtube将我链接到这里,我想我应该尝试提出一个替代答案。

也许您想使用像HTML Purifier这样的库?Malte 已经在https://stackoverflow.com/a/12784081/2716927中提出了这样做的方法。

未经测试的代码,但应该像这样工作:

require_once 'htmlpurifier/library/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Trusted', true);
$config->set('HTML.SafeIframe', true);
$config->set('URI.SafeIframeRegexp', '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%'); //allow YouTube and Vimeo
$purifier = new HTMLPurifier($config);

$text = $purifier->purify($document);
于 2014-05-02T18:01:22.123 回答