Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Walidacja pola tekstowego -błąd
Forum PHP.pl > Forum > Przedszkole
grizmo
[php]
<?
$tekst = 'jakis text';
if (!eregi('[a-z]+',$tekst))
{
echo 'Błąd';
}
else echo 'Dobrze';
?>
Jesli
$tekst = 'Kowalski' zwraca Dobrze -OK
$tekst = 'Kowalski2' zwraca Dobrze (chciałbym aby zwróciło Błąd)
$tekst = '222211#$' zwraca Błąd -OK
$tekst = '222211#$' zwraca Dobrze (chciałbym aby zwróciło Błąd)

Co zrobiłem źle w tym kodzie.Chciałbym aby walidowany ciąg był znakami alfabetu(najlepiej z polskimi znakami).

Pozdr.
Ociu
  1. <?php
  2. ereg('[A-Z]', $str);
  3. ?>

Z tego co pamiętam.
grizmo
ereg i eregi to to samo z tym że ta druga nie rozróżnia wielkości znaków.

Pozatym w jakiś sposób muszę zwrócić błąd jeśli jest żle - także w tej postaci to co Ociu napisałeś jest nizbyt dobre.
dr_bonzo
Musisz dodac ograniczniki wyrazenia:
"/^[a-z]$/"
lub (nia pamietam kolejnosci)
"/$[a-z]^/"
bo przeciez "Kowalski2" zawiera min. 1 mala litere.
grizmo
Dzięki dr_bonzo. Dokładnie powinno być tak

  1. <?php
  2. eregi('^[a-z]+$',$tekst)
  3. ?>

^ oznacza poprawność składni na początku
$ poprawność składni na końcu
+ powtórzenie jedem lib więcej razy


Ale jak zrobić żeby sprawdzał poprawność polskich znaków bo:
  1. <?
  2. $tekst = 'Góra';
  3. if (!eregi('^[a-z]+$',$tekst))
  4. {
  5.     echo 'Żle';
  6. }
  7. else echo 'Dobrze';
  8. ?>


podana zmienna już nie pasuje do ciągu, ale jak zamienie ó na o to już jest dobrze.
Jak to ominąć?

Sam znalazłem odpowiedź na to pytanie. MOże komuś się przyda:
  1. <?php
  2. $string = 'Zielona Góra';
  3.     if (ereg ("^[a-z ęóąśłżźćń]+$", $string) and strlen($string) != 0)
  4.     {
  5.              echo 'OK';
  6.     } else {
  7.              echo 'zła dana';
  8.     }
  9.  
  10. ?>
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.