Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.



Członek DUG




mam
$wpis = $_POST['wpis'];
$word_array=file('wulgaryzmy.txt');
foreach($word_array as $brzydkie_slowo) {
if(eregi($brzydkie_slowo, $wpis)) {
echo "jest brzydkie słowo";
}
else {
}
}I chociaż jest brzydkie słowo to nie działa. W pliku wulgaryzmy mam wypisane przekleństwa.
Jad dam
$wpis = 'członek'
$word_array=file('wulgaryzmy.txt');
foreach($word_array as $brzydkie_slowo) {
if(eregi($brzydkie_slowo, $wpis)) {
echo "jest brzydkie słowo";
}
else {
}
}I chociaż ch** jest na liście to nie działa. Ma ktoś pomysł jak to zrobić żeby działało? Ogólnie mi chodzi o to żeby jak pojawi się przekleństwo w $wpis to nie wyśle wpisu do bazy i wyświetli odpowiedni komunikat.
Offline



Administrator




Wyświetl sobie $word_array przy pomocy print_r() na przykład. Zobaczysz czy dobrze plik wczytuje do tabeli, może z tym jest problem, złe znaki końca linii czy coś.
Offline



Członek DUG




wyświetlałem za pomocą echo i było wszystko ok
Offline

Członek DUG


A nie powinna być zamieniona kolejnośc w eregi?
Offline

Członek DUG


ja bym proponowal po prostu:
$wpis = 'marchewka';
$word_array=file('wulgaryzmy.txt');
if( in_array($wpis, $word_array) ){
echo "jest brzydkie słowo";
}ok, powyzszy sposob jest dobry dla porownania czy dane slowo jest brzydkie, ale gdy szukamy brzydkich slow w tekscie, sposob ten jest malo optymalny. Napisalem zatem cos na podstawie Twojego skryptu, w takiej formie mi dziala:
<?
$wpis = $_GET['wpis'];
$word_array=file('wulgaryzmy.txt');
print_r($word_array);
foreach($word_array as $brzydkie_slowo) {
$newline = array("\n", "\r");
$brzydkie_slowo = str_replace($newline, "", $brzydkie_slowo);
if(preg_match('/'.$brzydkie_slowo.'/', $wpis)) {
echo "jest brzydkie słowo";
}
else {
}
}?>powyzej usuwam z brzydkiego slowa znak nowej linii oraz powrót karetki na pusty znak, poniewaz okazalo się, że funkcja file() zczytuje do tablicy wiersze wraz ze znakami nowej linii oraz powrotem karetki.
Ostatnio edytowany przez grzegorz.85 (2009-10-08 00:45:24)
Offline



Członek DUG




No teraz pokazuje że jest brzydkie słowo. Ale pokazuje że ono jest nawet jak go nie ma ;D
Offline



Administrator




giegiel napisał(-a):
No teraz pokazuje że jest brzydkie słowo. Ale pokazuje że ono jest nawet jak go nie ma ;D
Teraz to znaczy co zrobiłeś? Użyłeś sposobu grzegorza czy poprawiłeś eregi w swoim kodzie? Co do in_array, które jako przykład podał grzegorze jest troche do pupy bo porównuje z zachowaniem wielkości liter. Twój sposób wydaje się najlepszy, tylko zmień to eregi jak trzeba i może daj w trim porównywane stringi.
Offline



Członek DUG




Ni sposób od Grzegorza tak działa/nie działa :) potem się pobawie z tym eregi ;D teraz czas na uczelnie.
Offline



Członek DUG




Zmieniłem kolejność w eregi i działa ;) Dzięki
Offline



Członek DUG




A i czopka nie działa.... mam tak
$imie_nazwisko = $_POST['imie_nazwisko'];
$email = $_POST['email'];
$wpis = $_POST['wpis'];
$word_array=file('wulgaryzmy.txt');
$brz=0;
foreach($word_array as $brzydkie_slowo) {
if(eregi($wpis, $brzydkie_slowo)) {
$brz=1;
}
else {
}
}
if($brz == 0) {
$dodanie = "INSERT INTO wpisy ( imie_nazwisko, email, wpis, data) VALUES ('$imie_nazwisko' , '$email' , '$wpis', NOW())";
$wynik = mysql_query($dodanie) or die (mysql_error());
echo "Wpis dodano pomyślnie";
}
else {
echo "Komentarz zawiera wulgaryzmy, nie zostanie opublikowany.";
}i jak wpiszę
zajebiście
to nie przepuszcza ale jak wpiszę
bunkrów nie ma ale też jest zajebiście
to przepuszcza ;/
Offline



Administrator




Bo cały wpis "bunkrów nie ma ale też jest zajebiście" próbuje znaleźć. Musisz rozbić ciąg na słowa i każde słowo sprawdzać oddzielnie czy jest wulgaryzmem. Albo paradoksalnie ;] zamienić kolejność w eregi na taką jak była. Ale wszystko pod warunkiem, że w wulgaryzmy.txt każdy wulgaryzm jest w oddzielnej linii i przy porównaniu użyj trim() czyli eregi(trim($brzydkie_slowo), $wpis).
Offline



Członek DUG




Działa dzięki :D
Offline