Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z eregi()
adam882
post
Post #1





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

Ostrzeżenie: (0%)
-----


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?

Ten post edytował adam882 29.05.2010, 09:49:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
r4xz
post
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


  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. }
Go to the top of the page
+Quote Post
adam882
post
Post #3





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

Ostrzeżenie: (0%)
-----


Mimo wszystko zwraca wartość "Niedozwolone słowo!", nawet jeśli go nie ma (IMG:style_emoticons/default/mellow.gif)
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
adam882
post
Post #5





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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();

Ten post edytował tehaha 29.05.2010, 11:02:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 06:23