Как преобразовать разделенную запятыми строку из поля ACF для использования в str_ireplace - PullRequest
1 голос
/ 28 февраля 2020

Я работаю над ненормативной лексикой на сайте WordPress. Все работает нормально, когда я использую обычный пример массива: str_replace ("world", "Peter", "Hello world!");

Однако я сталкиваюсь с проблемой использования ассоциативного массива. Любые предложения будут с благодарностью!

  function customforumcontent($content) {
      $censored = get_field('banned_words_list', 'option'); // Gets text field of comma seperated values
      $censored = explode(",", $censored); // Create an associative array  
      $replace = '<b>[censored]</b>'; // Word to replace the banned word(s)

      $content = str_ireplace(array_keys($censored), $replace, $content); // Where my problem seems to be occurring

      return $content;
  }
     add_filter('asgarosforum_filter_post_content', 'customforumcontent');

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

Это работает для меня:

$content = 'I have a red car and a blue face';
$censored = 'red,blue'; // Gets text field of comma seperated values
$censored = explode(",", $censored); // Create an array
$censored = array_map('trim', $censored); // Remove any leading or trailing whitespace
$replace = 'green'; // Word to replace the banned word(s)
$content = str_ireplace($censored, $replace, $content);
echo $content; // I have a green car and a green face

Обратите внимание на следующую новую строку, которая удаляет любые конечные или начальные пробелы из массива запрещенных слов:

$censored = array_map('trim', $censored);
0 голосов
/ 28 февраля 2020

попробуйте использовать preg_replace с флагом без учета регистра:

$content = preg_replace("~".implode("|",$cencored)."~i", $replace, $content);
...