6
24.5.2011 1 Sveučilište Josipa Sveučilište Josipa Jurja JurjaStrossmayera u Osijeku, Strossmayera u Osijeku, Odjel za matematiku, Odjel za matematiku, Trg Ljudevita Gaja 6 Trg Ljudevita Gaja 6 31000 Osijek 31000 Osijek PHP PHP 11. vježbe Web programiranje i primjene Web programiranje i primjene Slobodan Jelić Sveučilište Josipa Sveučilište Josipa Jurja JurjaStrossmayera u Osijeku, Strossmayera u Osijeku, Odjel za matematiku, Odjel za matematiku, Trg Ljudevita Gaja 6 Trg Ljudevita Gaja 6 31000 Osijek 31000 Osijek Rad sa znakovnim vrijednostima i Rad sa znakovnim vrijednostima i regularnim izrazima regularnim izrazima 1. Formatiranje znakovnih vrijednosti 2. Spajanje i razdvajanje znakovnih vrijednosti 3. Uspoređivanje znakovnih vrijednosti 4. Pronalaženje i zamjena znakovnih podnizova pomoću funkcija za rad sa znakovnim vrijednostima 5. Upotreba regularnih izraza Web programiranje i primjene Web programiranje i primjene Primjer aplikacije: Primjer aplikacije: Smart Smart Form Form Mail Mail jednostavan obrazac za prikupljanje informacija od kupca jednostavan obrazac za prikupljanje informacija od kupca dio prethodnog projekta “Bobovi auto dio prethodnog projekta “Bobovi auto-dijelovi” dijelovi” prosljeđivanje e prosljeđivanje e-poruke određenom odjeljku Bobove firme poruke određenom odjeljku Bobove firme (na osnovu ključnih riječi) (na osnovu ključnih riječi) izvorni kod: feedback.html PHP skripta za obradu obrasca PHP skripta za obradu obrasca <? <?php php // //create create short short variable variable names names $name name=$_POST[' =$_POST['name name']; ']; $email email=$_POST[' =$_POST['email email']; ']; $feedback feedback=$_POST[' =$_POST['feedback feedback']; ']; //set //set up up some some static static information information $toaddress toaddress = " = "feedback [email protected] example.com"; "; $subject subject = " = "Feedback Feedback from from web site"; web site"; $mailcontent mailcontent = " = "Customer Customer name name: ".$ : ".$name name." ."\n". n". "Customer Customer email email: ".$ : ".$email email." ."\n". n". "Customer Customer comments comments:\n".$ n".$feedback. feedback."\n"; n"; $fromaddress fromaddress = " = "From From: : webserver [email protected] example.com"; "; // //invoke invoke mail() mail() function function to to send send mail mail mail($ mail($toaddress toaddress, $ , $subject subject, $ , $mailcontent mailcontent, $ , $fromaddress fromaddress); ); ?> ?> vrijednosti u poljima obrasca koje se dohvate pomoću niza _POST[’’] sadržaj e-poruke – konkatenacijastringova, vrijednosti iz obrasca funkcija za slanje mail-a: SINTAKSA: bool mail(string to, string subject, string message, string [additional_headers [, string additional_parameters]]); dodatna zaglavlja: $dodatna_zaglavlja="From: [email protected]\r\n" ."Reply-To: [email protected]"; SMTP poslužitelj SMTP poslužitelj Simple imple Mail ail Transfer ransfer Protocol rotocol– poslužitelj za slanje poslužitelj za slanje elektroničke pošte elektroničke pošte funkcija mail() u PHP funkcija mail() u PHP-u radit će samo ako ima instaliran SMTP u radit će samo ako ima instaliran SMTP poslužitelj na stroju poslužitelj na stroju localhost localhost. koristimo koristimo Mercury Mercury u sklopu XAMPP platforme u sklopu XAMPP platforme Mercury Mercury zatvoriti sve prozore zatvoriti sve prozore

Primjer aplikacije: Primjer aplikacije ......24.5.2011 6 •• regularni izrazi u PHPregularni izrazi u PHP--u se pišu između u se pišu između uvijekuvijekpolunavodnika polunavodnika

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

24.5.2011

1

Sveučilište Josipa Sveučilište Josipa JurjaJurja Strossmayera u Osijeku,Strossmayera u Osijeku,

Odjel za matematiku,Odjel za matematiku,

Trg Ljudevita Gaja 6Trg Ljudevita Gaja 6

31000 Osijek31000 Osijek

PHPPHP

11. vježbe

Web programiranje i primjeneWeb programiranje i primjene

Slobodan Jelić

Sveučilište Josipa Sveučilište Josipa JurjaJurja Strossmayera u Osijeku,Strossmayera u Osijeku,

Odjel za matematiku,Odjel za matematiku,

Trg Ljudevita Gaja 6Trg Ljudevita Gaja 6

31000 Osijek31000 Osijek

Rad sa znakovnim vrijednostima i Rad sa znakovnim vrijednostima i

regularnim izrazimaregularnim izrazima

1. Formatiranje znakovnih vrijednosti

2. Spajanje i razdvajanje znakovnih vrijednosti

3. Uspoređivanje znakovnih vrijednosti

4. Pronalaženje i zamjena znakovnih podnizova pomoću funkcija za rad sa znakovnim vrijednostima

5. Upotreba regularnih izraza

Web programiranje i primjeneWeb programiranje i primjene

Primjer aplikacije: Primjer aplikacije: SmartSmart FormForm MailMail

•• jednostavan obrazac za prikupljanje informacija od kupcajednostavan obrazac za prikupljanje informacija od kupca

•• dio prethodnog projekta “Bobovi autodio prethodnog projekta “Bobovi auto--dijelovi”dijelovi”

•• prosljeđivanje eprosljeđivanje e--poruke određenom odjeljku Bobove firme poruke određenom odjeljku Bobove firme

(na osnovu ključnih riječi)(na osnovu ključnih riječi)

izvorni kod:

feedback.html

PHP skripta za obradu obrascaPHP skripta za obradu obrasca

<?<?phpphp

////createcreate shortshort variable variable namesnames

$$namename=$_POST['=$_POST['namename'];'];

$$emailemail=$_POST['=$_POST['emailemail'];'];

$$feedbackfeedback=$_POST['=$_POST['feedbackfeedback'];'];

//set //set upup some some staticstatic information information

$$toaddresstoaddress = "= "feedbackfeedback@@example.comexample.com";";

$$subjectsubject = "= "FeedbackFeedback fromfrom web site";web site";

$$mailcontentmailcontent = "= "CustomerCustomer namename: ".$: ".$namename."."\\n".n".

""CustomerCustomer emailemail: ".$: ".$emailemail."."\\n".n".

""CustomerCustomer commentscomments::\\n".$n".$feedback.feedback.""\\n";n";

$$fromaddressfromaddress = "= "FromFrom: : webserverwebserver@@example.comexample.com";";

////invokeinvoke mail() mail() function function to to sendsend mailmail

mail($mail($toaddresstoaddress, $, $subjectsubject, $, $mailcontent mailcontent, $, $fromaddressfromaddress););

?>?>

vrijednosti u poljima

obrasca koje se dohvate

pomoću niza

_POST[’’]

sadržaj e-poruke –

konkatenacija stringova,

vrijednosti iz obrasca

funkcija za slanje mail-a:

SINTAKSA:

bool mail( string to, string subject, string message,string [additional_headers [, stringadditional_parameters]]);

dodatna zaglavlja:

$dodatna_zaglavlja="From: [email protected]\r\n"."Reply-To: [email protected]";

SMTP poslužiteljSMTP poslužitelj

•• SSimpleimple MMailail TTransfer ransfer PProtocolrotocol –– poslužitelj za slanje poslužitelj za slanje

elektroničke pošteelektroničke pošte

–– funkcija mail() u PHPfunkcija mail() u PHP--u radit će samo ako ima instaliran SMTP u radit će samo ako ima instaliran SMTP

poslužitelj na stroju poslužitelj na stroju localhostlocalhost ..

–– koristimo koristimo MercuryMercury u sklopu XAMPP platforme u sklopu XAMPP platforme

MercuryMercury

•• zatvoriti sve prozorezatvoriti sve prozore

24.5.2011

2

bob

VježbaVježba

•• koristiti datoteke koristiti datoteke feedback.htmlfeedback.html i i

processfeedback.phpprocessfeedback.php

•• U datoteci U datoteci processfeedback.phpprocessfeedback.php dodati sljedeće dodatno dodati sljedeće dodatno

zaglavljezaglavlje

dodatna zaglavlja:

$dodatna_zaglavlja="From: [email protected]\r\n"."Reply-To: [email protected]";

<?<?phpphp

////createcreate shortshort variable variable namesnames$$namename=$_POST['=$_POST['namename'];'];$$emailemail=$_POST['=$_POST['emailemail'];'];$$feedbackfeedback=$_POST['=$_POST['feedbackfeedback'];'];

//set //set upup some some staticstatic information information$$toaddresstoaddress = "= "bobautopartbobautopart@@localhostlocalhost";";

$$subjectsubject = "= "FeedbackFeedback fromfrom web site";web site";

$$mailcontentmailcontent = "= "CustomerCustomer namename: ".$: ".$namename."."\\n".n".""CustomerCustomer emailemail: ".$: ".$emailemail."."\\n".n".

""CustomerCustomer commentscomments::\\n".$n".$feedback.feedback.""\\n";n";

$$fromaddressfromaddress = "= "FromFrom: : webserverwebserver@@example.comexample.com";";

//dodatna zaglavlja//dodatna zaglavlja

//$dodatna_zaglavlja="//$dodatna_zaglavlja="FromFrom: : webserverwebserver@@example.comexample.com\\rr\\n"n"//."//."ReplyReply--To: bob@To: [email protected]";";

////invokeinvoke mail() mail() function function to to sendsend mailmailmail($mail($toaddresstoaddress, $, $subjectsubject, $, $mailcontent mailcontent, $, $fromaddressfromaddress););

?>?>

Formatiranje znakovnih vrijednostiFormatiranje znakovnih vrijednosti

•• znakovne vrijednosti koje šalju korisnici prije upotrebe znakovne vrijednosti koje šalju korisnici prije upotrebe

najčešće treba pročistitinajčešće treba pročistiti

•• imamo tri funkcije:imamo tri funkcije:

–– trimtrim() () –– briše bjeline s početka i kraja znakovnog podatkabriše bjeline s početka i kraja znakovnog podatka

–– ltrimltrim() () –– briše bjeline samo s početka znakovnog podatkabriše bjeline samo s početka znakovnog podatka

–– rtrimrtrim() () –– briše bjeline samo s kraja znakovnog podatkabriše bjeline samo s kraja znakovnog podatka

•• Zadatak 1: Koristeći funkciju Zadatak 1: Koristeći funkciju trimtrim() () očistite znakovne očistite znakovne

podatke u varijablama podatke u varijablama $$namename, , $$emailemail i i $$feedbackfeedback ..

Rješenje:

$name = trim($_POST['name']);$email = trim($_POST['email']);$feedback = trim($_POST['feedback');

24.5.2011

3

Formatiranje znakovnih vrijednosti u oblik pogodan za Formatiranje znakovnih vrijednosti u oblik pogodan za

ispisivanjeispisivanje

•• HTML formatiranje: funkcija HTML formatiranje: funkcija nl2br()nl2br()–– prihvata znakovnu vrijednost kao ulazni parametar i sve znakove za prihvata znakovnu vrijednost kao ulazni parametar i sve znakove za

novi redak zamjenjuje odgovarajućim XHTML oznakama novi redak zamjenjuje odgovarajućim XHTML oznakama <br/><br/>

•• Zadatak 2: Nakon unosa podataka u obrazac ispišite sadržaj eZadatak 2: Nakon unosa podataka u obrazac ispišite sadržaj e--

mail poruke (mail poruke (tjtj. vrijednost varijable . vrijednost varijable $$mailcontentmailcontent ) u HTML ) u HTML

dokument koji se učita nakon izvršavanja skripte. Učinite to dokument koji se učita nakon izvršavanja skripte. Učinite to

korištenjem i bez korištenja funkcije korištenjem i bez korištenja funkcije nl2br()nl2br() ..

Formatiranje znakovnih vrijednosti u obliku pogodnom za Formatiranje znakovnih vrijednosti u obliku pogodnom za

štampanještampanje

•• koristimo dvije naredbe:koristimo dvije naredbe:

–– echoecho –– prikazivanje znakovnih vrijednosti u WEB preglednikuprikazivanje znakovnih vrijednosti u WEB pregledniku

–– printprint –– isto što i isto što i echoecho, ali vraća TRUE ili FALSE u ovisnosti o tome je li , ali vraća TRUE ili FALSE u ovisnosti o tome je li

operacija uspjela ili neoperacija uspjela ili ne

•• printfprintf() () –– prosljeđuje formatiranu znakovnu vrijednost WEB preglednikuprosljeđuje formatiranu znakovnu vrijednost WEB pregledniku

•• sprintfsprintf() () –– formatira znakovnu vrijednost i vraća je u obliku formatira znakovnu vrijednost i vraća je u obliku stringastringa

–– sintaksa:sintaksa:

•• stringstring sprintfsprintf ((stringstring format [, format [, mixedmixed args.. args...]).])

•• voidvoid printfprintf ((stringstring format [, format [, mixedmixed args.. args...]).])

–– Primjeri:Primjeri:

•• echo “Total amount of order is echo “Total amount of order is $total$total.”;.”;•• printfprintf (“Total amount of order is (“Total amount of order is %s%s.”, .”, $total$total ););•• printfprintf (“Total amount of order is (“Total amount of order is %.2f%.2f”, ”, $total$total ););•• printfprintf (“Total amount of order is (“Total amount of order is %.2f%.2f (with shipping (with shipping %.2f%.2f) “,) “, $total$total , , $$totaltotal__shippingshipping ););

•• opća specifikacija konverzije:opća specifikacija konverzije:

–– %[‘znak_za_popunu][%[‘znak_za_popunu][--][širina][][širina][.preciznost.preciznost]tip]tip

•• numeriranje argumenatanumeriranje argumenata

–– printfprintf (“Total amount of order is (“Total amount of order is %%22\\$.2f$.2f (with (with shipping shipping %%11\\$.2f$.2f) “,) “, $total_$total_shippingshipping, $, $total total););

–– upotrebljava se prilikom ponavljanja argumenataupotrebljava se prilikom ponavljanja argumenata

–– upotrebljavaju se ponekad i sljedeće verzije funkcije upotrebljavaju se ponekad i sljedeće verzije funkcije prinprin tt::

•• vprintfvprintf() () –– drugi (i posljednji) argument je niz od vrijednosti koje se drugi (i posljednji) argument je niz od vrijednosti koje se

ispisujuispisuju

•• vsprintfvsprintf() () –– isto kao i isto kao i vprintfvprintf() () ali se rezultat ispisuje u ali se rezultat ispisuje u stringstring a a

ne u WEB preglednikne u WEB preglednik

Pretvaranje malih slova u velika i obrnutoPretvaranje malih slova u velika i obrnuto

24.5.2011

4

Formatiranje znakovnih vrijednosti u oblik pogodan za unos Formatiranje znakovnih vrijednosti u oblik pogodan za unos

u bazuu bazu

•• mogu postojati problemi prilikom unošenja sljedećih znakova:mogu postojati problemi prilikom unošenja sljedećih znakova:

–– navodnici (obični i navodnici (obični i polunavodnicipolunavodnici))

–– obrnuta kosa crta (obrnuta kosa crta (\\))

–– NULLNULL

•• MySQLMySQL ih može shvatiti kao upravljačke vrijednostiih može shvatiti kao upravljačke vrijednosti

–– ispred tih znakova treba dodati kosu crtuispred tih znakova treba dodati kosu crtu

–– \\”” , , \\\\ , , \\\\\\\\

•• addslashesaddslashes()()–– $$feedbackfeedback = =

addslashesaddslashes((trimtrim($_POST['($_POST['feedbackfeedback']));']));

•• stripslashesstripslashes()()–– uklanja dodatne kose crte. Koristi se ako je aktivirana direktiva uklanja dodatne kose crte. Koristi se ako je aktivirana direktiva

magicmagic__quotesquotes__gpcgpc

Spajanje i razdvajanje znakovnih vrijednostiSpajanje i razdvajanje znakovnih vrijednosti

•• explodeexplode()()–– sintaksa: sintaksa: arrayarray explodeexplode((stringstring grani čnik, grani čnik, stringstring tekst tekst

[, int broj]);[, int broj]);

–– Primjer:Primjer:

•• $$emailemail__arrayarray = = explodeexplode(‘@’, $(‘@’, $emailemail););

–– varijabla varijabla $$emailemail__arrayarray je niz dijelova rastavljenog teksta graničnikom je niz dijelova rastavljenog teksta graničnikom @@(u ovom slučaju korisničko ime i domena)(u ovom slučaju korisničko ime i domena)

•• Zadatak 3:Zadatak 3: Ako je ime domene u eAko je ime domene u e--mail adresi mail adresi bigcustomer.combigcustomer.com ee--mail poruku proslijedite korisniku mail poruku proslijedite korisniku bob@[email protected] , inače na adresu , inače na adresu feedbackfeedback@@example.comexample.com . Ime domene mora biti ispisano . Ime domene mora biti ispisano

malim slovima!malim slovima!

•• implodeimplode()() , , joinjoin()()–– imaju istu sintaksu kao imaju istu sintaksu kao i i explodeexplode()() , ali suprotan učinak, ali suprotan učinak

–– Primjer:Primjer:

•• $new_$new_emailemail = = implodeimplode(‘@’, $(‘@’, $emailemail__arrayarray););

Funkcija Funkcija strtokstrtok()()

•• omogućava obradu niza znakovnih podataka riječ po riječomogućava obradu niza znakovnih podataka riječ po riječ

•• sintaksa:sintaksa:

–– stringstring strtokstrtok((stringstring inputinput, , stringstring separator);separator);

–– Primjer:Primjer:

$$tokentoken = = strtokstrtok($($feedbackfeedback, ‘“ “);, ‘“ “);

echoecho $$tokentoken.”<br />”;.”<br />”;

whilewhile ($($tokentoken != “”) != “”)

{{

$$tokentoken = = strtokstrtok(“ “);(“ “);

echoecho $$tokentoken.”<br />”;.”<br />”;

}}

Funkcija Funkcija substrsubstr()()

•• izdvajanje izdvajanje podnizapodniza znakovnih vrijednosti između zadanog i znakovnih vrijednosti između zadanog i

krajnjeg položajakrajnjeg položaja

•• Sintaksa:Sintaksa:

–– stringstring substrsubstr((stringstring stringstring, int start[, int , int start[, int lengthlength] );] );

–– Primjeri:Primjeri:

•• $test = ‘Your customer service is excellent’$test = ‘Your customer service is excellent’

•• substrsubstr($test, 1); ($test, 1); -- our customer service is our customer service is excellentexcellent

•• substrsubstr($test, ($test, --9); 9); -- excellent excellent

•• substrsubstr($test, 0, 4); ($test, 0, 4); -- YourYour

•• echo echo substrsubstr($test, 5, ($test, 5, --13);13); -- ispisuje: ispisuje: customercustomer serviceservice

Uspoređivanje znakovnih vrijednostiUspoređivanje znakovnih vrijednosti

•• == potpuna podudarnost== potpuna podudarnost

•• naprednije uspoređivanje:naprednije uspoređivanje:

–– djelomična podudarnostdjelomična podudarnost

–– ostaloostalo

•• strcmpstrcmp() () –– Sintaksa:Sintaksa:

–– int int strcmpstrcmp((stringstring str1, str1, stringstring str2);str2);

–– ako su ako su str1str1 i i str2str2 jednaki vraća 0jednaki vraća 0

–– ako je po abecedi ako je po abecedi str1str1 iza (veći od)iza (veći od) str2str2 vraća broj vraća broj većiveći od 0od 0

–– ako je po abecedi ako je po abecedi str1str1 ispred (manji od) ispred (manji od) str2str2 vraća broj vraća broj manjimanji od 0od 0

–– pravi razliku izmeću velikih i malih slovapravi razliku izmeću velikih i malih slova

•• strnatcmpstrnatcmp()()–– ista sintaksa kao i ista sintaksa kao i strcmpstrcmp()()

–– uspoređuje nizove prema prirodnom poretkuuspoređuje nizove prema prirodnom poretku

–– više o prirodnom poretku na više o prirodnom poretku na http://www.naturalordersort.org/http://www.naturalordersort.org/

•• postoje verzije postoje verzije strcasecmpstrcasecmp() () i i strnatcasecmpstrnatcasecmp() () koje NE prave koje NE prave razliku između velikih i malih slovarazliku između velikih i malih slova

Dužina znakovne vrijednosti: funkcija Dužina znakovne vrijednosti: funkcija strlenstrlen()()

•• SintaksaSintaksa

–– int int strlenstrlen((stringstring str1);str1);

–– Primjer:Primjer:

ifif ((strlenstrlen($($emailemail) < 6){ ) < 6){

echo ‘That email address is not valid’;echo ‘That email address is not valid’;

exit; // force execution of PHP scriptexit; // force execution of PHP script

}}

–– provjera ispravnosti eprovjera ispravnosti e--mail adresemail adrese

24.5.2011

5

Funkcija za utvrđivanje podudarnosti i za zamjenjivanje Funkcija za utvrđivanje podudarnosti i za zamjenjivanje

znakovnih znakovnih podnizovapodnizova

•• strstrstrstr()()–– Sintaksa:Sintaksa:

•• stringstring strstrstrstr((stringstring tekst, tekst, stringstring uzorak);uzorak);

•• ako se ako se uzorakuzorak pojavljuje u nizu znakovnih vrijednosti pojavljuje u nizu znakovnih vrijednosti teksttekst onda onda

funkcija vraća dio vrijednosti parametra funkcija vraća dio vrijednosti parametra teksttekst od prvog pojavljivanja od prvog pojavljivanja

parametra parametra uzorakuzorak pa nadaljepa nadalje

•• inače, vraća inače, vraća FALSEFALSE

•• strchrstrchr() () –– isto kao i isto kao i strstrstrstr() () (razlika postoji u C(razlika postoji u C--u)u)

•• stristrstristr() () –– isto kao i isto kao i strstrstrstr() () ali pravi razliku između ali pravi razliku između

velikih i malih slovavelikih i malih slova

•• strrchrstrrchr() () –– vraća dio izvorne vrijednosti od posljednjeg vraća dio izvorne vrijednosti od posljednjeg

pojavljivanja uzorka pa nadaljepojavljivanja uzorka pa nadalje

Utvrđivanje položaja znakovnog Utvrđivanje položaja znakovnog podnizapodniza: funkcije : funkcije

strposstrpos()() i i strrposstrrpos()()

•• djeluje isto kao i djeluje isto kao i strstrstrstr() () ali vraća ali vraća pozicijupoziciju parametra parametra uzorakuzoraku parametru u parametru teksttekst

•• Sintaksa:Sintaksa:

–– int int strposstrpos((stringstring tekst, tekst, stringstring uzorak, int uzorak, int [pomak] );[pomak] );

–– Primjeri:Primjeri:

$test = "$test = "HelloHello world";world";echoecho strposstrpos($test, "o");($test, "o");

echoecho strposstrpos($test, ‘o’, 5);($test, ‘o’, 5);

$$resultresult = = strposstrpos($test, “H”);($test, “H”);ifif ($($resultresult ====== falsefalse) {) {echoecho ““NotNot foundfound”;”;

} } elseelse {{echo “Found at position ".$result;echo “Found at position ".$result;}}

zašto?

Zamjenjivanje dijelova izvornog znakovnog podatka: funkcije Zamjenjivanje dijelova izvornog znakovnog podatka: funkcije

str_str_replacereplace()() i i substrsubstr__replacereplace()()

•• str_str_replacereplace()()

•• Sintaksa:Sintaksa:–– mixed mixed str_replacestr_replace(mixed (mixed uzorakuzorak, mixed , mixed zamjenazamjena

mixed mixed teksttekst[, [, intint &&koliko_putakoliko_puta]));]));

–– rezultat funkcije je nova verzija parametrarezultat funkcije je nova verzija parametra tekst tekst u kojoj je svako u kojoj je svako pojavljivanje parametra pojavljivanje parametra uzorakuzorak zamijenjeno parametromzamijenjeno parametrom zamjenazamjena

–– Primjeri:Primjeri:

•• $$feedbackfeedback = str_= str_replacereplace($($offcoloroffcolor, ‘%!@*’, , ‘%!@*’, $$feedbackfeedback););

•• substrsubstr__replacereplace()()

•• Sintaksa:Sintaksa:–– stringstring substrsubstr__replacereplace((stringstring tekst, tekst, stringstring

zamjena, int zamjena, int pocetakpocetak, , intint [duljina] );[duljina] );

–– dio parametradio parametra tekst tekst zamjenjuje se parametrom zamjenjuje se parametrom zamjenazamjena

–– dio parametra dio parametra teksttekst određen je parametrima određen je parametrima pocetakpocetak i i duljinaduljina

Regularni izraziRegularni izrazi

•• postoje dva stila:postoje dva stila:

–– POSIX POSIX –– podrazumijevani stilpodrazumijevani stil

–– PerlPerl

•• osnove:osnove:

–– oblik u kome opisujemo uzorak teksta koji tražimooblik u kome opisujemo uzorak teksta koji tražimo

–– sličniji funkciji sličniji funkciji strstrstrstr()()

–– pomoću specijalnih znakova mogu se zadati određeni uvjeti koje mora pomoću specijalnih znakova mogu se zadati određeni uvjeti koje mora

ispunjavati znakovni nizispunjavati znakovni niz

•• znak . znak . –– predstavlja bilo koji drugi znakpredstavlja bilo koji drugi znak

–– primjer:primjer:

•• .at.at

•• ‘‘catcat’, ‘sat’, ‘mat’, ‘#at’’, ‘sat’, ‘mat’, ‘#at’

•• [a[a--z]at z]at –– ograničenje na skup slova od a do zograničenje na skup slova od a do z

•• [[aeiouaeiou] ] –– samoglasnicisamoglasnici

•• [a[a--zAzA--Z] Z] –– velika i mala slovavelika i mala slova

•• [^a[^a--z] z] –– sve osim malih slova od sve osim malih slova od aa do do zz (negacija, komplement)(negacija, komplement)

•• definiran opseg znakovadefiniran opseg znakova

•• klaseklase

•• ponavljanje: ponavljanje: +,*,?+,*,? (značenje kao i u Java (značenje kao i u Java ScriptuScriptu))

–– primjer: primjer: [[:[[:alnumalnum:]]+:]]+

•• podizrazipodizrazi: : (vrlo)* veliko(vrlo)* veliko–– veliko, veliko, velovelo veliko veliko, vrlo , vrlo vrlovrlo veliko veliko

•• nabrojani nabrojani podizrazipodizrazi

–– (vrlo ){1,3}(vrlo ){1,3}

–– ‘vrlo’‘vrlo’ ,, ‘‘vrlovrlo vrlo ‘ vrlo ‘ ,, ‘vrlo vrlo ‘vrlo vrlo vrlovrlo ‘‘

•• vezivanje za početak ili kraj znakovnog podatkavezivanje za početak ili kraj znakovnog podatka

–– ^̂ -- traženi uzorak se mora nalaziti na početku znakovnog podatkatraženi uzorak se mora nalaziti na početku znakovnog podatka

–– $$ -- traženi uzorak se mora nalaziti na kraju znakovnog podatkatraženi uzorak se mora nalaziti na kraju znakovnog podatka

–– primjer: primjer: ̂ [a^[a--z]$z]$

•• GrananjeGrananje

–– ((comcom)|(edu)|(net))|(edu)|(net)

•• posebni znakovi: stavlja se kosa crta ispred: posebni znakovi: stavlja se kosa crta ispred: \\., ., \\{, {, \\$, $, \\\\

24.5.2011

6

•• regularni izrazi u PHPregularni izrazi u PHP--u se pišu između u se pišu između uvijekuvijek polunavodnikapolunavodnika

•• \\ -- početak izlazne sekvencepočetak izlazne sekvence

•• posebni znakoviposebni znakovi

Uporaba regularnih izraza u aplikaciji Uporaba regularnih izraza u aplikaciji SmartSmart FormForm MailMail

•• prepoznavanje određenih riječiprepoznavanje određenih riječi

–– shopshop||customercustomer service|service|retailretail

•• ispravnost eispravnost e--mail adresemail adrese

–– ^[a^[a--zAzA--Z0Z0--9_9_\\--.]+@[a .]+@[a--zAzA--Z0Z0--99\\--]+]+\\.[a.[a--zAzA--Z0Z0- -99\\--.]+$.]+$

•• Pronalaženje znakovnih Pronalaženje znakovnih podnizovapodnizova pomoću regularnih izrazapomoću regularnih izraza

–– funkcije funkcije eregereg()() i i eregieregi()()

–– sintaksa:sintaksa:

•• intint eregereg(string pattern, string search, array (string pattern, string search, array [matches]);[matches]);

•• funkcije funkcije eregieregi() () ne pravi razliku između velikih i malih slovane pravi razliku između velikih i malih slova

Zadatak 4.Zadatak 4.

•• u datoteku u datoteku processorder.phpprocessorder.php dodajte provjeru edodajte provjeru e--mail mail

adrese pomoću regularnog izrazaadrese pomoću regularnog izraza