Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenia regularne, Czy ktoś zna adres?
rze-X-nik
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 20.03.2004
Skąd: Szczebrzeszyn

Ostrzeżenie: (10%)
X----


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.


--------------------
while(!$wakacje){ czekaj();
}
if($wakacje){ yuppie();
} exit;
Go to the top of the page
+Quote Post
kubatron
post
Post #2





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

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


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


--------------------
„Człowiek jest wielki nie przez to, co posiada, lecz przez to, kim jest;
nie przez to, co ma, lecz przez to, czym dzieli się z innymi.”
Jan Paweł II
Go to the top of the page
+Quote Post
FiDO
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


W manualu Ci malo? A umiesz juz wszystko co tam jest napisane?


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Riklaunim
post
Post #4





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


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


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
kubatron
post
Post #5





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

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


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.


--------------------
„Człowiek jest wielki nie przez to, co posiada, lecz przez to, kim jest;
nie przez to, co ma, lecz przez to, czym dzieli się z innymi.”
Jan Paweł II
Go to the top of the page
+Quote Post
scanner
post
Post #6





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




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


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Bakus
post
Post #7


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

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


@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


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
rze-X-nik
post
Post #8





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 20.03.2004
Skąd: Szczebrzeszyn

Ostrzeżenie: (10%)
X----


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

Ten post edytował rze-X-nik 23.06.2004, 08:50:21


--------------------
while(!$wakacje){ czekaj();
}
if($wakacje){ yuppie();
} exit;
Go to the top of the page
+Quote Post
sf
post
Post #9





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


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.


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:45