#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. Привет, Нико! Я уже решил эту проблему.