Strona 1 z 1

Cenzura

: pn paź 10, 2005 9:57 pm
autor: i2av
Witam!
Podczas nauki php chciałem sobie zrobić proste ćwiczenie ale napotkałem trudność, z którą nie mogę się uporać. Zatem proszę o pomoc. Oto cenzor:


[php]<?php
@ $wp = fopen('cenzura.txt', 'rb');
if (!$wp) {
echo 'Błąd. Spróbuj innym razem.</body></html>'
exit;
}
$i = 0;
while (!feof($wp)) {
$cenzura[$i] = fgets($wp, filesize('cenzura.txt'));
$i++;
}
foreach ($cenzura as $element) {
echo $element.' '; // strona kontakt serwis http wyraz ten
}

$text = 'powiedziałem wyraz, a ten wyraz to wyraz.';
$text2 = str_replace($cenzura, 'cenzura', $text);
echo $text2; // powiedziałem wyraz, a cenzura wyraz to wyraz.
?>[/php]

Pobiera niecenzuralne słówka z pliku tekstowego do tablicy. Tu jest cały problem! Kiedy tworzę ręcznie tablicę ze słówkami to szafa gra, ale w powyższym kodzie cenzurowany jest tylko ostatni element z tablicy pomimo, że wszystkie elementy są poprawnie wyświetlane foreach'em! Także muszą istnieć. Nie mam pojęcia czym się różni utworzona tablica na podstawie pliku od utworzonej automatycznie przez skrypt.

Re: Cenzura

: pn paź 10, 2005 10:36 pm
autor: Hawk
Wrzuc funkcje str_replace do petli foreach i powinno dzialac jak trzeba.

Re: Cenzura

: pn paź 10, 2005 11:26 pm
autor: flavio100
dokladnie - petla foreach kreci sie DLA KAZDEGO i potem ustawia 'biezacy wskaznik' na ostatni element tablicy.
dlatego jak uzyjesz replace to bada tylko ostatnie slowo z tablicy.

staralem sie łopatologicznie;)
pzdr

Re: Cenzura

: wt paź 11, 2005 7:53 pm
autor: i2av
Dzięki. Czyli widocznie cała tablica jako pierwszy parametr nie jest odczytywana przez str_replace. Ciekawe jest to, że jak wrzucę jako parametr tablicę tekstu do ocenzurowania to obrobi całą, a tej rusza tylko bierzący element. :/