猿问

替换帖子内容中的多个域

我有一个包含域的数组,我想替换 WordPress 中的内部帖子内容。我的功能很简单,使用 preg_replace。


<?php

add_filter( 'the_content', 'filter_the_content' );


function filter_the_content( $content ) {

  $domains = array('domain1.com/out/','domain2.com/out/');

  if ( is_single() ) {

      $content = preg_replace("/^(http(s)?:\/\/)?((w){3}.)?(".implode('|', $domains)

."?([a-zA-Z0-9_]{2,5}.)?(\/out)?\/.+/i", 'https://domain3.com/out', $content);

  }

  return $content;

}

?>

应用过滤器后,我的内容消失了,我不知道如何让它工作,替换数组中的域。


HUH函数
浏览 66回答 1
1回答

手掌心

在您的正则表达式中,您有两倍的扩展名和/out/.你可以用以下方法解决这个问题:$content = 'blah https://domain1.com/out/ blah https://domain2.com/out/ blah https://domainXXX.com/out/ blah';$domains = array('domain1.com/out/','domain2.com/out/');$content = preg_replace("~(?:https?://www)?(?:".implode('|', $domains).")~i", 'https://domain3.com/out', $content);echo $content;输出:blah https://https://domain3.com/out blah https://https://domain3.com/out blah https://domainXXX.com/out/ blah演示和解释
随时随地看视频慕课网APP
我要回答