加载的IFRAME中的_Content和Preg_Replace

时间:2017-11-11 作者:Milor123

问题是:

加载后,我尝试删除iframe生成的标记。

iframe用于加载视频,但它会加载一些如下标记<div role="contentinfo" class="dmp_VideoInfo dmp_is-hidden" aria-hidden="true"> the which I need delete

解释iframe过程我在帖子中插入了这个框架:

<iframe width="480" height="270" frameborder="0" src="//www.dailymotion.com/embed/video/x68s7j8?autoPlay=0&amp;logo=0&amp;related=0&amp;social=0" allowfullscreen="allowfullscreen"></iframe>
然后加载视频,它会创建一个divs 带文本我要删除包含所有文本的div。

<div role="contentinfo" class="dmp_VideoInfo"><h1 class="dmp_VideoInfo-title dmp_u-cf"><a class="dmp_VideoInfo-title-text dmp_VideoInfo-item" aria-label="Video title: MORE TEXT with TITLE xD" href="http://www.dailymotion.com/video/xxxxxx" target="_blank">VIDEO NAME TEXT #text</a></h1><h3 class="dmp_VideoInfo-duration"><span class="dmp_VideoInfo-duration-text dmp_VideoInfo-item dmp_cursor-default" aria-label="Video duration: 11 minutes, 25 seconds" href="#">TOTAL TIME</span></h3><h2 class="dmp_VideoInfo-owner"><a class="dmp_VideoInfo-owner-text dmp_VideoInfo-item" aria-label="Video owner: Ownername xDD" href="http://www.dailymotion.com/myuser" target="_blank">Ownername xDD</a></h2></div>
我尝试了什么

我用过DOMpreg_replace 函数,代码如下(在functions.php中):

function antiponchada($content) {
    if (is_single()){
        $object = new DOMDocument();
        $object->LoadHTML($content);
        $xpathobj= new DOMXPath($object);
        $result=$xpathobj->query(\'div[@class="dmp_VideoInfo"]\'); //example only
        foreach($result as $node){
            $node->parentNode->removeChild($node);
        }
        return $object->saveHTML();
    }
    else {
        return $content;
    }
}
add_filter("the_content", "antiponchada", 999); // also without 999
还有(regex很好,放松):

function antiponchada($content) {
    if (is_single()){

        $newcontent = preg_replace(\'/<div role="contentinfo" class="dmp_VideoInfo dmp_is-hidden" aria-hidden="true">.+<\\/div>/\',"",$content);
        return $newcontent;
    }
    else {
        return $content;
    }
}

add_filter("the_content", "antiponchada", 999);
我需要什么我需要删除加载iframe视频后生成的标签

1 个回复
最合适的回答,由SO网友:Johansson 整理而成

你不能,就这么简单。

为什么不呢

首先,因为DIV 不是您内容的一部分。它要么由WordPress的过滤器生成,要么由浏览器本身生成。所以,你不能preg_replace 在一些不存在的东西上。

其次,还有一个跨域政策问题。无法操纵iframe 除非这两个网页属于同一个域。任何其他操作都会导致安全错误。这是故意的,是为了防止欺骗等行为。

有关更多信息,请查看this 链接

结束

相关推荐

Functions.php中的字符串转换不起作用

我在中使用了以下代码functions.php 要翻译一些文本:add_filter(\'gettext\', \'aad_translate_words_array\'); add_filter(\'ngettext\', \'aad_translate_words_array\'); function aad_translate_words_array( $translated ) { $words = array( // \'word to