Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z preg_match()
Forum PHP.pl > Forum > Przedszkole
RemoverPL
Witam, mam problem z funkcją preg_match. Mam kod, który powinien sprawdzać czy zmienna $tekst zawiera polskie znaki. Jeżeli tak, to powinien wyświetlić się napis "W tekscie wystepuja polskie znaki." a jeżeli nie, to powinno pisać "Tekst nie zawiera polskich znakow.". Problem w tym, że zawsze pisze że w tekście są polskie znaki, nawet jak ich nie ma. Oto kod:
  1. <?php
  2. $tekst = "aaa";
  3. $wyrazenie = '/^[a-z]$/';
  4. if(preg_match($wyrazenie, $tekst)) 
  5.     echo"Tekst nie zawiera polskich znakow.";
  6. else 
  7.     echo "W tekscie wystepuja polskie znaki.";
  8. ?>

Czy mógłby ktoś to poprawić?
samouk
a to od [a-z]nie zwraca ogólnie liter?
drPayton
  1. preg_match("/[^a-z]/", "aaa")

Czyli czy string podany zawiera znaki, nie należące do podanej klasy (tu: tylko litery a-z)

Te rozwiązanie nawiązuje do podanego przez Ciebie przykładu. Tu jak widać definiujesz dozwolone znaki (=zwróci 'false' również wtedy, gdy w stringu podany zostanie np cyfra)*. Jeśli ma działać tylko i wyłącznie na polskie litery, to właśnie je musisz zdefiniować, czyli:

  1. preg_match("/[ąćęłńóśźż]/", "aaa")



*edit, ściślej:
"czy są znaki nie należące do podanych" a nie "czy zawiera tylko znaki należące do podanych" bo to subtelna różnica [w zwracanej wartości] wink.gif
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.