YouTube 以外の HTML からすべての 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);