0
add_filter('the_content','filter_trendland_content');


//create a the function to get the content of the page by using the hook the_content
function filter_trendland_content($content) {
    $getdata = $content;
    if ( preg_match_all( '#(?:<a.+?href=["|\'](?P<link_url>.+?)["|\'].*?>\s*)?(?P<img_tag><img.+?src=["|\'](?P<img_url>.+?)["|\'].*?>){1}(?:\s*</a>)?#is', $getdata, $images ) ) {
        foreach ( $images[img_url] as $key => $value) {
            $subdomain = rand( 1, 3 );
            $newurl="yaseen.media$subdomain.com";
            $content = preg_replace('/\bmedia.trendland.com\b/', $newurl, $value);
            print $content;
        }
        print $getdata;
    }

    //return $getdata;
}   

我正在使用上述方法将 url 替换为新的并更新页面的内容,但页面内容仍然相同,所以请帮助我..

4

1 回答 1

1

查看您的函数,它没有返回值。

不是打印输出,而是将内容返回给过滤器。

此外,您正在遍历一个空对象 - $images[img_url]。检查preg_match_all的文档。它返回一个多维匹配数组。

您的代码看起来设计过度,正则表达式中的单词边界可能会阻止匹配。如果 media.trendland.com 的所有实例都需要替换,则以下内容可能会实现您的需要。

function filter_trendland_content($content) {

    $subdomain = rand( 1, 3 );
    $newurl='yaseen.media' . $subdomain . '.com';
    $content = preg_replace('/media.trendland.com/', $newurl, $content);

    return $content;
}   
于 2013-09-27T10:35:10.867 回答