我想从 HTML 中删除除 YouTube 之外的所有 iframe。
我已经尝试使用带有插入符号的代码来排除 YouTube 关键字,但它没有用。
$search[] = '@<iframe[^(youtube)]*?>.*?</iframe>@si';
$text = preg_replace($search, '', $document);
由于谷歌搜索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);