Заменить несколько доменов в посте - PullRequest
0 голосов
/ 02 августа 2020

У меня есть массив с доменами, которые я хочу заменить внутри поста в 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;
}
?>

После применения фильтра мой контент исчезает, и я не знаю, как заставить его работать, заменяя домены в массиве.

1 Ответ

0 голосов
/ 02 августа 2020

В вашем регулярном выражении у вас есть удвоенное расширение и /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

Демонстрация и объяснение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...