0
我想從HTML除HTML以外的所有iframe。除帶有正則表達式的YouTube之外的PHP帶iframe
我已將此代碼與除YouTube關鍵字之外的脫字號簽署,但它沒有奏效。
$search[] = '@<iframe[^(youtube)]*?>.*?</iframe>@si';
$text = preg_replace($search, '', $document);
我想從HTML除HTML以外的所有iframe。除帶有正則表達式的YouTube之外的PHP帶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);
這真的很難,如果不是不可能的使用正則表達式這一點。如果標籤是
這沒關係,因爲這個html代碼來自可信來源。這意味着沒有惡意代碼。我只需要剝離無用的iframe(臉譜)等...我需要保持youtube iframe只。 – TomSawyer