если str_contains всегда будет возвращать параметр else, даже если он содержит определенную строку

#php #php-8

Вопрос:

Я разрабатываю фильтр слов, я только что перешел на PHP 8, чтобы использовать str_contains и многие его новые функции.

При использовании str_contains в операторе if, если я добавляю оператор else, он всегда возвращает оператор else, даже если он содержит указанное слово.

Что может быть не так со следующим кодом?

  function ReplaceFilter ($string) {  // Stops people from being able to use spaces to bypass the filter.  $string = $this-gt;ClearSpaces($string);   // Replace numbers that could be used to bypass with letters.  $string_final = str_ireplace('1', 'i', $string);   foreach ($this-gt;banned_words as $banned_word)   {  if (str_contains($string_final, $banned_word)) {  // Repeat the replacement for the length of the banned word.  $this-gt;replacement = str_repeat($this-gt;replacement, strlen($banned_word));   // Return the result  return str_ireplace($banned_word, $this-gt;replacement, $string_final);  } else {  return $string;  }  }  }  

Комментарии:

1.Вы всегда return в любой части if else , так что это не пройдет через цикл, просто проверьте первое слово.

2. Что вы пытались сделать, чтобы решить эту проблему? Это не должно быть слишком сложно отладить, даже используя var_dump , чтобы увидеть, где это идет не так

3. Привет, Нико! Я уже решил эту проблему.