Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Walidacja pola tekstowego -błąd, Działa prawie dobrze ale z wyjatkami
grizmo
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 21.03.2005

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


[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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Ociu
post
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




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

Z tego co pamiętam.
Go to the top of the page
+Quote Post
grizmo
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 21.03.2005

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


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.

Ten post edytował grizmo 4.01.2006, 19:47:22
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Musisz dodac ograniczniki wyrazenia:
"/^[a-z]$/"
lub (nia pamietam kolejnosci)
"/$[a-z]^/"
bo przeciez "Kowalski2" zawiera min. 1 mala litere.
Go to the top of the page
+Quote Post
grizmo
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 21.03.2005

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


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. ?>


Ten post edytował grizmo 4.01.2006, 22:44:09
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: 23.09.2025 - 07:24