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.
Cenzura
Re: Cenzura
Wrzuc funkcje str_replace do petli foreach i powinno dzialac jak trzeba.
Re: Cenzura
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
dlatego jak uzyjesz replace to bada tylko ostatnie slowo z tablicy.
staralem sie łopatologicznie;)
pzdr
Re: Cenzura
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. :/

