Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie regularne - my¶lnik
Forum PHP.pl > Forum > Przedszkole
dobryvinyl.com
Witam,

Pisze wyrażenie regularne które mi waliduje prosty text z imputów. Chodzi o to żeby był bezpieczny i niezawierał tagów html. Jezeli tak sie stanie jednak ma zwrócić bł±d. Wymysliłem sobie co¶ takiego

  1. <?php
  2. if (ereg("^[A-Za-z0-9!#$%&'*+/=?^_-`{|}~ąćęłńó¶ż»ĄĆĘŁŃÓ¶Ż®±¦Ľˇ¦¬ ]+$", "$str")){
  3.        return true;
  4.    }else{
  5.      return false;
  6.  }
  7. ?>


Wszystko jest spoko gdyby.. no i tu wła¶nie mam problem z nieszczęsnym my¶lnikiem "-" mimo, że jest on dozwolony jego wstawienie w formularzu wyrzuca mi bł±d sad.gif
Gdzie popełniam bł±d? Przeczytałem już trochę materiałów z sieci i nic.

Czy kto¶ może ma jaki¶ inny sposób, wzorzec na rozwi±zanie tego problemu?
JoShiMa
Tak patrząc po Twoim kodzie to jest tam sporo znaków, które trzeba poprzedzić znakiem '\'. Są to metaznaki | ( ) { [ ^ $ * + ?
kacka
Nie sprawdzałem co to robi, tylko poprawiłem:
  1. <?php
  2. if (preg_match('/^[A-Za-z0-9!#$%&'*+/=?^_-`{|}~ąćęłńó¶ż»ĄĆĘŁŃÓ¶Ż®±¦Ľˇ¦¬ ]+$/i', $subject))
  3. ?>
pyro
Po co się męczyć z wyrażeniami regularnymi:

  1. <?php
  2. // prostsze, skuteczniejsze i krótsze rozwi±zanie
  3. // zakładaj±c że filtrujemy zmienn± `$str`
  4.  
  5. $sec_check = strip_tags($str);
  6.  
  7. if(strlen($sec_check) != strlen($str))
  8. {
  9. die('Po co tagi w twoim stringu :)?');
  10. }
  11. ?>


Cytat(JoShiMa @ 16.05.2009, 11:54:04 ) *
Tak patrz±c po Twoim kodzie to jest tam sporo znaków, które trzeba poprzedzić znakiem '\'. S± to metaznaki | ( ) { [ ^ $ * + ?


@JoShiMa, jeżeli podajemy znaki jako zbiór znaków w "[]", to nie trzeba ich escape'ować. A minus się wysypuje, gdyż jest on od okre¶lania przedziału znakowego, np. 0-9, więc wystarczy "-" zamienić na "\-"
JoShiMa
Masz rację, nie popatrzyłam gdzie te []
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.