Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenia regularne
Forum PHP.pl > Forum > PHP
rze-X-nik
Czołem!

Znacie może adres, pod którym opisane jest wszystko KPK o wyrażeniach regularnych? Czytałem w manualu, ale to trochę mało...

Pozdroofka.
kubatron
Chodzi ci o ereg, jak tak to mam taki art nie pamiętam skąd:

Kod
Wyrażenia regularne jest to taka funkcja php (i właściwie wszystkich innych języków) która sprawdza czy dany ciąg znaków, wyraz, liczba lub coś mieszanego ma określoną formę. Oto przykład na chłopski rozum: wiemy chyba co to jest subskrypcja - odwiedzający mogą tam wpisać swój adres email aby otrzymywać informacje o nowościach. Adres email zbudowany jest w ten sposób: coś@cos - po lewej i prawej stronie małpy może wystąpić do 25 znaków czyli 25 po lewej, 25 po prawej + @ to razem 51 znaków. Ale przecież gdy ktoś wpisze w naszą subskrypcje np: "typedale"? Subskrypcje udostępniane przez duże serwisy np www.sub.4free.pl sprawdza poprawność adresu, ale gdy my np. mamy subskrypcje swojej produkcji? Trzeba jakoś sprawdzać czy adresik jest poprawny. I teraz pokaże jak to zrobić.

Zaczynamy pisząć ereg("warunki,$nazwa_sprawdzanego elementu,$tablica") - jeżeli wielkość liter ma być uwzględniana, lub eregi("") jeżeli nie. $tablica nas na razie nie interesuje (jest to opcjonalny argument).
Oto jak to wykorzystać do emaila:

eregi("^([a-z0-9_-.]{1,25})@([a-z0-9_-.]){1,25}$",$email)
Teraz opis. Znak ^ oznacza, że pierwszy człon (wyraz) ma spełniać dane warunki a znak $ - że ostatni. Warunek to ([a-z0-9_-.]{1,25}) - onacza, że ciąg może się zkładać z liter od a do z (małe lub duże bo użyliśmy eregi - gdyby miały by być same duże to wtedy funkcja eregi A-Z) ,znaku podreślenia, myślnika i kropki, a liczby w nawiasach klamrowych oznaczają ilość znaków czyli od 1 do 25 znaków może tworzyć pierwszy człon. Potem ma być znak @ a następnie jest to samo wyrażenie. To jest poprawny adres e-mail. Teraz to trzeba jakoś sprawdzić a jest to bardzo łatwe. Wystarczy utworzy instrukcje if else i jako argument if wkleić ereg(i). Oto przykład:

$adres=wpisz_email_a_potem_nie_email;
if( eregi("^([a-z0-9\_-.]{1,25})@([a-z0-9\_-.]{1,25})$",$adres) )
{
echo "To jest adres email";
}
else
{
echo "To nie jest adres email";
}

Jeżeli chcielibysmy sprawdzić odwrotnie czyli if(warunek nie prawdziwy) to wystarczy postawić przed ereg wykrzyknik !.

Wyrażenia regularne posiadają mase możliwości,a tu przedstawiłem tylko ogólną koncepcję aby można było to zrozumieć. Poniżej wypisałem pare funkcji, które pomogą tworzyć wyrażenia regularne na wasze potrzeby:

"^poczatek" - każdy ciąg znaków zaczynający się od frazy "poczatek"
"koniec$" - każdy ciąg znaków kończący się frazą "koniec"
"^tekst$" - ciąg rozpoczynający się i kończący frazą "tekst"
"tekst" - kązdy ciąg, który zawier frazę "tekst"
Symbole '*','+' i '?' oznaczają liczbę wystąpień określonego znaku lub frazy w ciągu. Oznaczają odpowiednio "zero, więcej" , "jeden lub więce" i "jeden lub zero"
"ab*" - każdy ciąg zawierający znak a, po którym występuje zero lub więcej b (np:ab,abbb)
"ab+" - każdy ciąg zawierający znak a, po którym występuje conajmniej jeden znak b
"ab?" - każdy ciąg zawierający znak a, po którym może lecz nie musi być b
"a?b+$" - ciąg, w którym może wystąpić a uzupełnione przez jedno lub więcej b kończących łąńcuch
Możemy tez używać nawiasów klamrowych { i } aby określić liczbę powtórzeń (jak w przykładzie)
"ab{2}" - każdy ciąg znaków zawierający a, po który występuje dokładnie dwa b
"ab{2,)" - każdy ciąg znaków zawierający a, po który występuje co najmniej dwa b
"ab{3,5}" - ciąg zawietający a i od trzech do pięciu b(np:abbb,abbbb)
Znaki '(' i ')' służą do oznaczenia całej frazy
"a(bc)*" - ciąg zawierający, a po którym występuje zero lub więcej fraz bc np.abcbcbcbcbc
"a(bc){1,5}" - ciąg zawierający a, po którym występuje od jednej do pięcu fraz bc
Symbol '|' spełnia zadanie operatora LUB
"elo|siema" - ciąg, w którym występuje fraza elo lub siema
"(a|bc)*c" - ciąg zawierający zero lub więcej znaków a|b poprzedzających znak c np:ac, bccc
Kropka '.' oznacza dowolny znak
"a.b" - ciąg, w którym pomiędzy a i b wystepuje dowolny znak np: a1b albo arbuz
"^.{5}$" - ciąg zawierający dokładnie pięć dowolnych znaków np: 12345 albo qwert
Symbol ^ wystepujący jako pierwszy w nawiasie kwadratowym oznacza odwrotność zapisu zamkniętego w tym nawiasie
"^[^a-zA-Z]+$" - ciąg niezawierający żadnej litery od a doz np:1000
FiDO
W manualu Ci malo? A umiesz juz wszystko co tam jest napisane?
Riklaunim
Manual nie jest napisany prostym językiem dla początkujących... można z niego skorzystać gdy wie się czego szuka, a nie do nauki od podstaw jakiegoś zagadnienia..
kubatron
Cytat(Riklaunim @ 2004-06-21 13:49:05)
Manual nie jest napisany prostym językiem dla początkujących... można z niego skorzystać gdy wie się czego szuka, a nie do nauki od podstaw jakiegoś zagadnienia..

Oj młody człowieku mylisz się, manual to skarbnica wiedzy z której nawet poczatkujący może się nauczyć php i różnych zagadnien.
scanner
Cytat(kubatron @ 2004-06-21 13:55:51)
Oj młody człowieku mylisz się, manual to skarbnica wiedzy z której nawet poczatkujący może się nauczyć php i różnych zagadnien.

Kubatron wie o tym najlepiej, nieprawdaż?

Wiem, wiem.. offtopic.gif ale nie mogłem sie powtrzymać.
Bakus
@scanner: też bym się nie mógł powstrzymać...
I nie mogę...
A co mają google na ten temat do powiedzenia?
http://www.google.com/search?q=%22wyra%C5%...=utf-8&oe=utf-8
(cytat: Wyniki 1 - 10 spośród około 12,400 dla zapytania "wyrażenia regularne" - sporo... jest w czym wybierać...)
winksmiley.jpg hehehe
rze-X-nik
Mamusia już mnie nauczyła, że korzysta się zawsze z podręczników. Mam ściągnięty manual, ale tego czego Dzięki WAM właściwie znalazłem to tam za bardzo nie ma.

A tak poza tym: to ja w domu mam modem sad.gif

Tak właściwie: to manuala rozumiem w 90%, tyle razy mi podpowiadał jak stosować poszczególne funkcje, ale wyrażenia regularne...
sf
Jakbym mial sie uczyc programowania w c np. z takiego MAN to bym poprostu chyba zwariowal. Manuale zawieraja wiedze, ale brak w nich przykladow, filozofi programowania i do tego lepsze sa kursy, ksiazki, artykuly gdzie jest wytlumaczone dokladnie o co chodzi i wskazowki jak to ugryzc.
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.