YGREG.COM - Wyrażenia regularne 

29.07.2004
Nowa oferta hostingowa.

29.07.2004
Kurs XPath.

13.10.2002
Poprawiony problem z oznaczaniem przeczytanych wiadomości na forum.

13.06.2002
PHP z Zend Engine 2 już dostępne!

17.02.2002
Zmiany w organizacji serwisu.








Początek strony

(C)opyright 1997-2007
by Grzegorz Plebański
INDEX I ARTYKUŁY I SKRYPTY I DOWNLOAD

Dodaj stronę
do ulubionych

Artykuły i kursy
   PHP
   XML
   CGI
   HTML
   Inne

Skrypty PHP
   Komunikacja
   Księgi gości
   Statystyki
   Głosowania
   Bannery
   Inne
Skrypty CGI

Download



Wyrażenia regularne


        Regularne wyrażenia dostarczają możliwości zaawansowanych porównań oraz manipulacji na ciągach znaków STRING'ach.
        Można je spotkać w wielu innych językach, takich jak np. Perl, JavaScript itp. Regularnych wyrażeń możemy użyć w takich funkcjach jak ereg(), eregi(), ereg_replace(), eregi_replace(), split(), spliti().



Podstawy oraz znaki specjalne


   
^programowanie

        Znak ^ wskazuje że słowo(string) powinno zaczynać się od słowa "programowanie", przykładowo:
"Lubię programowanie" zwróci nam wartość false ponieważ zaczyna się słowem "Lubię" natomiast, "Programowanie to niezła zabawa" zwróci wartość true.

   
programowanie$

        W tym przypadku znak $ wskazuje że słowo(string) powinien kończyć się słowem "programowanie", przykład:
"Lubię programowanie" tym razem zwróci nam wartość true, gdyż tak jak chcieliśmy kończy się słowem "programowanie", a "Programowanie to świetna sprawa" da wartość false;

   
^programowanie$

        Ten przypadek to połączenie obu powyższych czyli pasować będą tylko ścisłe słowa w naszym wypadku tylko słowo "programowanie" da wartość true.

   
programowanie

        To wyrażenie będzie porównywało każde słowo zawierające w sobie słowo "programowanie".
        pl|de|us|gb - dzięki znakowi "|" możemy dawać kilka możliwości, działa on jak logiczny operator OR Powyższy przykład sprawdza czy w słowie występuje "pl" lub "de" lub "us" lub "gb"
        Kropka "." reprezentuje jakikolwiek znak, można go użyć w bardziej rozbudowanych wyrażeniach np:
ab.def - sprawdza czy słowo zawiera "ab" + jakikolwiek znak + "def".
^.+@.+..+$ - w tym wypadku sprawdzamy czy słowo jest e-mailem, a więc na początku słowa mogą być jakiekolwiek znaki po których następuje znak "@", po nim natomiast znowu mogą być jakiekolwiek znaki. W środku musi wystąpić kropka "." jednak nie może być ona ostatnim znakiem w słowie.



Nawiasy kwadratowe

        Wrażenia w nawiasach kwadratowych [] sprawdzają czy jakikolwiek znak występujący w tych nawiasach występuje w słowie.
        Znak "-" umożliwia określenie pewnego zakresu znaków:
[det] - sprawdza czy występuje przynajmniej jedna z liter "d" lub "e" lub "t"
[a-z] - sprawdza czy występują małe litery
[A-Z] - sprawdza czy występują duże litery
[a-Z] - sprawdza czy występują litery
[0-9] - sprawdza czy występują cyfry
        PHP posiada także "character classes" czyli już zdefiniowane zbiory znaków:
[[:alpha:]] - sprawdza czy występują małe litery
[[:alnum:]] - sprawdza czy występują litery oraz cyfry
[[:digit:]] - sprawdza czy występują cyfry
[[:xdigit:]] - sprawdza czy występują liczby w systemie 16-kowym
[[:lower:]] - sprawdza czy występują małe litery
[[:upper:]] - sprawdza czy występują duże litery
[[:punct:]] - sprawdza czy występują znaki interpunkcji
        Znak ^ użyty wewnątrz nawiasów kwadratowych [] oznacza negację czyli:
[^0-9] - sprawdzi czy cyfry NIE WYSTĘPUJĄ



Nawiasy okrągłe

        W nawiasach {} możemy porównywać jedno lub więcej wystąpień danego słowa/znaku
a{3} - sprawdza czy występują dokładnie trzy litery "a"
a{2,} - sprawdza czy występują dwie lub więcej liter "a"
a{3,5} - sprawdza czy występują minimalnie trzy i maksymalnie pięć liter "a"
        A oto kilka przykładów:
        Przy pomocy wyrażeń regularnych w bardzo prosty sposób można sprawdzić czy dane słowo spełnia określone przez nas kryteria przykładowo:

   
if (!ereg ("[a-zA-Z]{1,}", $nazwisko))
   echo "Podałeś nieprawidłowe nazwisko";

if (!ereg ("^.+@.+\..+$", $mail))

   echo "Nieprawidłowy adres e-mail";

if (!ereg ("[0-9]{1,3}", $wiek))

   echo "Niemożliwe abyś miał 1000
	      lat albo więcej!";

if
 (!ereg ("pl|de|us|gb", $panstwo))
   echo "Nie podałeś wymaganego
 państwa";

if (!eregi("^[[:alnum:]]{4, 6}$", $haslo))
   echo "Hasło powinno zawierać
 od 
	      4 do 6 liter lub cyfr.";

        Można także wyciągać ze słów określone części:

   
$url = "http://www.inetplus.pl";
$tld = ereg("([^.]*$)", $url, $reg);
echo $reg[1];

        Po wykonaniu tego kodu zwróci nam on z podanego adresu, domenę czyli w tym wypadku "pl".
        W prosty i szybki sposób można zamieniać częsci słówa:

   
$string = "skrypt-php";
$string = ereg_replace("^[^-]*", "język", 
                       $string); 
// $string przyją teraz
 wartość "język-php"
echo $string;

        Powyższy kod zamieni słowo "skrypt" na słowo "język".
        To by było na tyle jeżeli chodzi wyrażenia regularne jak widać dzięki nim można w prosty i szybki sposób wykonać wiele operacji związanych ze słowami (string'ami). W sposób zwięzły i przedewszystkim szybki zrobić to co mogłoby zająć wiele linijek kodu i czasu.