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