str_replace в цикле у меня неработает

Pablito

Новичок
str_replace в цикле у меня неработает

Добрый день, подскажите люди добрые, потому что своим умишкой никак не соображу.

делаю самый примитивный фильтр матов, уже прочитал о его бесполезности, но надо :(
мой скрипт, где-то имеет принципиальный и наверное очень простой изян, но я его никак неувижу, надеюсь на Ваш хелп

$badwords = file("badwords.php"); // файл с плохими словами

// переменная $message хранит сообщение для проверки

// Пытаюсь в цикле обойти массив "плохих" слов и заменить плохое слово на ***, и так (по задумке) последовательно заменить все плохие слова

while (list ($key, $value) = each ($badwords)){

$msg = str_replace($value, "***", $message);
$message = $msg;
}

echo($message);

В результате меняется только последнее "плохое" слово из массива $badwords

Помогите!!! плиз
:confused:
 
while (list ($key, $value) = each ($badwords)){
хм. а [m]foreach[/m] чем не устроил...
 

TAHK

Guest
Читайте мануал... там ясно сказано "Each element of the array corresponds to a line in the file, with the newline still attached" - если не понятно, перевожу - каждый элемент масива содержит одну строку файла с символом переноса строки, понятно, что совпадение может быть только с последним элементом (он без переноса) и может где-то случайно
 

Фанат

oncle terrible
Команда форума
Pablito, надо всегда читать документацию на ту функцию, которую испоьзуешь.
 

AHTIXPICT

Новичок
А такой код у тебя работает?
PHP:
<?php
$search = array("her", "urod");
$str = "her ty ugadal urod poganiy";
echo str_replace($search, "***", $str);
?>
Мда про "\n" я не подумал.
Тогда лучше так, без всяких циклов:
PHP:
<?php
$search = explode("\n", file_get_contents("badwords.php"));
$str = str_replace($search, "***", $str);
?>
 

Pablito

Новичок
БОЛЬШОЕ БОЛЬШОЕ спасибо AHTIXPICT, TAHK и всем остальным кто откликнулся !!! Вразумили :))))
 
Сверху