Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z eregi()
Forum PHP.pl > Forum > Przedszkole
adam882
Witam

Chciałem napisać filtr słów kluczowych dla pół w formularzu. Wygląda mniej więcej tak:

  1. $filtr=array('niedozwolone_slowo_1',''niedozwolone_slowo_2',''niedozwolone_slowo_3',''niedozwolone_slowo_4');
  2. if(!eregi($filtr,array($_POST['pole1'],$_POST['pole2'],$_POST['pole3']))){echo 'OK';}else{echo 'Niedozwolone słowo!';}


ale najwyraźniej zrobiłem coś źle, gdyż skrypt nie działa poprawnie. Myślałem nad rozbiciem $filtr i stworzenie pętli, która pojedynczo będzie sprawdzać każde słowo, ale byc może istnieje lepsze rozwiązanie. Czy mógłby mi ktoś pomóc?
r4xz
  1. $filtr=array('niedozwolone_slowo_1','niedozwolone_slowo_2','niedozwolone_slowo_3','niedozwolone_slowo_4');
  2. if(!eregi($filtr,array($_POST['pole1'], $_POST['pole2'], $_POST['pole3']))) {
  3. echo 'OK';
  4. }
  5. else {
  6. echo 'Niedozwolone słowo!';
  7. }
adam882
Mimo wszystko zwraca wartość "Niedozwolone słowo!", nawet jeśli go nie ma mellow.gif
tehaha
1. nie używaj eregi() bo został zdeprecjonowany
2. Napisz co próbujesz osiągnąć, chodzi Ci o jakiś filtr przekleństw? Może prościej będzie użyć str_replace() i ocenzurować nie dozwolone słowa?
adam882
Chcę przy użyciu niedozwolonych słów w tablicy $filtr=array(); sprawdzić, czy zawierają się w kilku wysyłanych danych $_POST, aby zablokować dodanie w przypadku wykrycia ich w treści.
tehaha
jeżeli nie dozwolone słowo nie może również zawierać się w innym słowie, czyli do poniższego przykładu: zabronione jest słowo ptak, to słowo ptakaaa też nie przejdzie
  1. $string = 'Na murku siedzi ptak, a na stole stoją kwiatki';
  2. $pattern = 'kotek|piesek|ptak';
  3.  
  4. if (preg_match("/$pattern/", $string)) {
  5. echo "Nie dozwolone słowo!";
  6. } else {
  7. echo "ok.";
  8. }

a jeżeli nie dozwolone słowo ma być dokładnie takie jak to zabronione czyli ptak nie przejdzie a ptakaa przejdzie to, zabronione słowa obejmujesz \b \b :

  1. $string = 'Na murku siedzi piesek, a na stole stoją kwiatki';
  2. $pattern = '\bkotek\b|\bpiesek\b|\bptak\b';
  3.  
  4. if (preg_match("/$pattern/", $string)) {
  5. echo "Nie dozwolone słowo!";
  6. } else {
  7. echo "ok.";
  8. }



jeżeli to nie za duży tekst to szybciej było by rozbić tekst na spacji przez explode() i wtedy sprawdzić funkcją in_array();
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.