Upload
phamhuong
View
221
Download
3
Embed Size (px)
Citation preview
10.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
Web programiranje i primjeneWeb programiranje i primjene
10. vježbe
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
Snimanje i učitavanje podatakaSnimanje i učitavanje podataka
Web programiranje i primjeneWeb programiranje i primjene
• Spremanje podataka za kasniju uporabu
• Otvaranje datoteka
• Izrada i upisivanje podataka u datoteku
• Zatvaranje datoteke
• Čitanje iz datoteke
• Zaključavanje datoteka
• Brisanje datoteka
• Uporaba korisnih datotečnih funkcija
PripremaPriprema
•• Iz mape Iz mape poglavlje2_snimanje_i_poglavlje2_snimanje_i_ucitavanjeucitavanje_podataka_podataka
kopirati datoteke u korijenski direktorij za objavljivanje na kopirati datoteke u korijenski direktorij za objavljivanje na serveruserveru localhostlocalhost
idite na
C:/xampp/htdocs
Spremanje i čitanje podatakaSpremanje i čitanje podataka
• Spremanje podataka za kasniju uporabu
• Otvaranje datoteka
• Izrada i upisivanje podataka u datoteku
• Zatvaranje datoteke
• Čitanje iz datotekej
• Zaključavanje datoteka
• Brisanje datoteka
• Uporaba korisnih datotečnih funkcija
Spremanje podataka za kasniju uporabuSpremanje podataka za kasniju uporabu
Spremanje podataka na 2 načina: Spremanje podataka na 2 načina:
•• u običnu (tekstualnu) datoteku (u običnu (tekstualnu) datoteku (engeng. . flatflat file),file),
→→ jednostavno za korištenje, ali i ograničenojednostavno za korištenje, ali i ograničeno
•• u bazu podatakau bazu podataka•• u bazu podataka,u bazu podataka,
→→ za rad s podacima većeg formataza rad s podacima većeg formata
Primjer:Spremanje i promatranje Bobove narudžbePrimjer:Spremanje i promatranje Bobove narudžbe
10.5.2011
2
Polje imena ‘tireqty’
Polje imena ‘oilqty’
Sl1. Forma narudžbe Bobovih auto dijelova
Polje imena ‘address’
Polje imena‘sparkqty’
Rad sa datotekama
Upisivanje podataka u datoteku (3 koraka):
1. Otvoriti datoteku. Ukoliko ne postoji, najprije je kreirati;
2. Upisati podatke u datoteku;
3. Zatvoriti datoteku.
Čitanje podataka iz datoteke (3 koraka):
1. Otvoriti datoteku. Ukoliko se ne može otvoriti, uočiti pogrešku i naći prikladno rješenje;
2. Čitati podatke iz datoteke;
3. Zatvoriti datoteku.
Otvaranje datotekeOtvaranje datoteke
• Koristimo funkciju fopen()
• Voditi računa na koji način želimo koristiti datoteku – režim (engl. filemode)
3 izbora prilikom otvaranja datoteke:
1. želite li datoteku za isključivo pisanje, isključivo čitanje ili oboje i čitanje i pisanje;
2. prilikom upisivanja podataka u datoteku, želite li postojeći sadržaj zamijeniti novim ili nove podatke dodati na kraj datoteke;
3. ukoliko upisujete podatke u datoteku u sustavu koji razlikuje binarne i tekstualne datoteke, trebate li specificirati ovu činjenicu.
Funkcija fopen() podržava kombinacije ovih triju mogućnosti.
Uporaba funkcije fopen()
Primjer: narudžbe klijenata se spremaju u Bobovu datoteku s narudžbama
imena orders.txt
ime datoteke koju otvaramoNačin uporabe datoteke
(eng. file mode)
Varijabla daje korijen stabla dokumenta na web serveru, ali zbog nezgrapnosti koristimo kratka imena varijabli, te na početku skripte moramo definirati
Uporaba funkcije fopen()
$fp = fopen(‘orders.txt’, ‘ab’, true);
omogućava da se zada prefiks protokola pomoću kojeg se pristupa udaljenim datotekama (http, ftp)
resurs –pokazivač, koristi se za pisanje i čitanje iz datoteke
10.5.2011
3
Problemi s otvaranjem datoteka
• Npr.otvaranje datoteke za koju nemate ovlasti niti čitanja niti pisanja u nju.
Ukoliko se funkcija fopen() ne uspije izvršiti, vraća vrijednost FALSE,pa se korisniku može poslati odgovarajuća poruka.
Upisivanje podataka u datoteku
• Koristimo funkciju: fwrite( ) ili fputs( )
String spremljen u $outputstring upisuje u datoteku određenu s $fp.
Treći parametar funkcije fwrite( ), 'length' je neobavezan i predstavljap j g j p jmaksimalan broj bitova koji se mogu upisati u datoteku.Duljinu stringa možemo dobiti koristeći ugrađenu PHP funkciju strlen()
Novo u PHP5:
int file_put_contents ( string imedatoteke,string podaci[, int indikatori[, resource kontekst]])
Format datoteke
•ovisi isključivo o programeru
String koji predstavlja jednu zabilježbu u datoteci dobivamo s:
Zatvaranje datoteke
•koristimo funkciju fclose( )
Zadatak 1.Zadatak 1.
•• U datoteku U datoteku orders.txtorders.txt koja se nalazi u poddirektoriju koja se nalazi u poddirektoriju ordersorderskorijenskog direktorija na serveru upišite podatke s narudžbe koji se korijenskog direktorija na serveru upišite podatke s narudžbe koji se nalaze u varijabli nalaze u varijabli $$outputstringoutputstring
$$outputstringoutputstring = = $date$date.”.”\\t”.t”.$$tireqtytireqty..” ” tirestires \\t”.t”.$$oilqtyoilqty..”oil”oil\\t”.t”.$$sparkqtysparkqty.” .” sparksparkplugsplugs\\tt\\$”.$”.$$totalamounttotalamount.”.”\\t”.t”. $$addressaddress.”.”\\n”;n”;plugsplugs\\tt\\$ .$ .$$totalamounttotalamount.. \\t . t . $$addressaddress.. \\n ;n ;
•• Otvorite datoteku u Otvorite datoteku u appendappendmodu kombiniranim s modu kombiniranim s binarybinary u u mapi mapi ordersorders
•• ukoliko je otvaranje neuspjelo ispišite obavijestukoliko je otvaranje neuspjelo ispišite obavijest
•• ako je uspjelo koristeći funkciju ako je uspjelo koristeći funkciju fwritefwrite() () upišite varijablu upišite varijablu $$outputstringoutputstring
•• zatvorite datotekuzatvorite datoteku
Čitanje podataka iz datoteke
•Slično upisivanju podataka u datoteku
10.5.2011
4
•Otvaramo datoteku za čitanje s
•Petlja while koristeći funkciju feof( ) provjerava jesmo li došli do kraja datoteke
Zadatak 2.Zadatak 2.
•• U datoteci U datoteci vieworders.phpvieworders.php upišite potreban kod tako da upišite potreban kod tako da se u WEB preglednik ispiše sadržaj datoteke se u WEB preglednik ispiše sadržaj datoteke orders.txtorders.txt..
Čitanje redak po redakČitanje redak po redak
• Koristimo funkcije : fgets(), fgetss() i fgetscsv()
Funkcija fgets( ) je korisna za isključivo tekstovne datoteke
U našem primjeru:
Čitanje cijele datoteke
• Koristimo funkcije: readfile(),fpassthru() i file()
Čitanje znak po znak
• Koristimo funkciju fgetc()
Čitanje niza bitova proizvoljne duljine
• koristimo funkciju fread()
Neke korisne datotečne funkcije
•Provjera postoji li zaista određena datoteka : file_exists( ),
•Određivanje veličine datoteke: filesize( ),
•Brisanje datoteke: unlink( ),
•Upravljanje unutar datoteke: rewind( ), fseek( ) i ftell( )
Zaključavanje datoteke
• služi kako bismo izbjegnuli problem istovremenog upisivanja podataka u istu datoteku od strane različitih klijenata
• Koristimo funkciju flock()PHP kod u datoteci dodatak.txt iskoristite u prethodna dva zadatka.
10.5.2011
5
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
Uporaba polja (Uporaba polja (ArraysArrays))
Web programiranje i primjeneWeb programiranje i primjene
• Numerički indeksirana polja
• Nenumerički indeksirana polja
• Operatori s poljima
• Višedimenzionalna polja
• Sortiranje polja
• Funkcije s poljima
POLJE(niz, eng.array)
‐je mjesto pohranjivanja skupa vrijednosti čime je omogućeno grupiranje skalara.
Numerički indeksirana polja
•U PHP‐u indeksi polja počinju od nule, ali se ta vrijednost može promijeniti
Primjeri kreiranja polja:
Uporaba elemenata polja
• Sadržaju elementa polja pristupamo preko imena polja i indeksa elementa, indeks elementa upisuje se u zagradi poslije imena polja
• Zamjenu sadržaja određenog elementa polja ostvarujemo koristeći operator ‘=’
Polja su indeksirana što omogućuje jednostavnije korištenje for petlje, npr. za ispis svih elemenata polja
• Specijalno kreirana za rad s poljima foreach petlja
Polja sa drugačijim indeksima
PHP omogućava da se elementima polja dodijele proizvoljni indeksi
Primjer: Polje s elementima čiji su indeksi redom Tires,Oil,Spark Plugs
Koja je razlika između ove i prethodne sintakse?
10.5.2011
6
Korištenje petlji
• Indeksi elemenata polja nisu brojevi, pa je onemogućen rad s for petljom,
• Rješenje: foreach petlja, te list( ) i each( ) funkcije
Ili preko each() konstruktora
Rezultat:
Funkcija list() se može koristiti za podjelu polja na određen broj vrijednosti
Primjer: Odvajanje dviju vrijednosti koje daje funkcija each()
Višedimenzionalna polja
• Nastaju kada element polja sadrži neko drugo polje
• Dvodimenzionalna polja = matrice, tablice s redcima i stupcima
Ovakvo polje dobili smo sljedećom naredbom u PHP‐u:
Svaki element dvodimenzionalnog polja ima dva indeksa‐retka i stupca
Ispis svih elemenata polja ostvarujemo naredbom:
Ili k i t ći f tlj t f tljIli koristeći for petlju unutar for petlje:
Rezultat u oba slučaja je isti:
Koji je od ova dva načina bolji i zašto?
10.5.2011
7
Sortiranje polja
• Koristimo funkciju sort( )
Primjeri:
• Polje sortirano po rastućem alfabetskom poretku
• Polje sortirano po rastućem numeričkom poretku
Funkcija sort() je osjetljiva na mala i velika slova!
• Drugi parametar funkcije sort( ) je neobavezan,
vrijednosti: SORT_REGULAR, SORT_NUMERIC ili SORT_STRING
Na primjeru polja s nenumeričkim indeksima možemo ilustrirati funkcije asort( ) i ksort( )
Funkcija asort( ) slaže sadržaj polja prema vrijednosti svakog elementaFunkcija asort( ) slaže sadržaj polja prema vrijednosti svakog elementa
Funkcija ksort( ) slaže sadržaj polja prema ključu (indeksu) svakog elementa
Za slaganje sadržaja polja u padajućem poretku koristimo funkcije:
• rsort( )
• arsort( )
• krsort( )
Koristimo ih na isti način kao i funkcije za slaganje u rastućem poretku
Slaganje višedimenzionalnih polja
Primjer dvodimenzionalnog polja:
Koristimo funkciju usort( ) i potrebno je uputiti PHP na koji način da uspoređuje elemente
Preuređivanje polja
• Funkcijom shuffle( ) mijenjamo redoslijed elemenata na slučajan način
• Funkcija array_reverse( ) vraća elemente polja u obratnom redoslijedu
Primjer: Prikaz triju slučajno odabranih slika na Bobovoj stranici koristeći PHP
10.5.2011
8
Učitavanje polja iz datoteke
•Funkcija file( ) učitava cijelu datoteku u polje, svaki red u datoteci je poseban element polja, a koristeći funkciju count( ) brojimo koliko ima elemenata u polju
koristite datoteku vieworders.php
Korisne funkcije za rad s poljima
• Upravljanje unutar polja: each( ), current( ),reset( ),end( ),next( ), pos( ) i prev( )
• Primjena bilo koje funkcije na svaki element polja: array_walk( )
• Brojanje elemenata u polju: count( ), sizeof( ) i array_count_values( )
• Pretvaranje polja u skalare: extract( )
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
Web programiranje i primjeneWeb programiranje i primjene
1. Formatiranje znakovnih vrijednosti2. Spajanje i razdvajanje znakovnih vrijednosti3. Uspoređivanje znakovnih vrijednosti4. Pronalaženje i zamjena znakovnih podnizova pomoću funkcija za rad sa
znakovnim vrijednostima5. Upotreba regularnih izraza
Primjer aplikacije: Primjer aplikacije: SmartSmart FormFormMailMail
•• 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 poruke određenom odjeljku BobveBobve firme (na firme (na osnovu ključnih riječi)osnovu ključnih riječi)
izvorni kod:
feedback.html
PHP skripta za obradu obrascaPHP skripta za obradu obrasca
<?<?phpphp
////createcreate shortshort variablevariable namesnames
$$namename=$_POST['=$_POST['namename'];'];
$$emailemail=$_POST['=$_POST['emailemail'];'];
$$feedbackfeedback=$_POST['=$_POST['feedbackfeedback'];'];
//set //set upup some some staticstatic informationinformation
$$toaddresstoaddress = "= "feedbackfeedback@@example.comexample.com";";
vrijednosti u poljima obrasca koje se dohvate pomoću niza _POST[’’]
funkcija za slanje mail‐a:
SINTAKSA:
bool mail(string to, string subject, string message,string [additional_headers [, stringadditional parameters]]);
$$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() functionfunction to to sendsend mailmail
mail($mail($toaddresstoaddress, $, $subjectsubject, $, $mailcontentmailcontent, $, $fromaddressfromaddress););
?>?>
sadržaj e‐poruke –konkatenacija stringova, vrijednosti iz obrasca
additional_parameters]]);
dodatna zaglavlja:
$dodatna_zaglavlja="From: [email protected]\r\n"."Reply-To: [email protected]";
10.5.2011
9
SMTP poslužiteljSMTP poslužitelj
•• SSimpleimpleMMailail 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
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]";
10.5.2011
10
<?<?phpphp
////createcreate shortshort variablevariable namesnames$$namename=$_POST['=$_POST['namename'];'];$$emailemail=$_POST['=$_POST['emailemail'];'];$$feedbackfeedback=$_POST['=$_POST['feedbackfeedback'];'];
//set //set upup some some staticstatic informationinformation$$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() functionfunction to to sendsend mailmailmail($mail($toaddresstoaddress, $, $subjectsubject, $, $mailcontentmailcontent, $, $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');
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•• 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
10.5.2011
11
•• 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, $, $totaltotal););
–– 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 prinprintt::•• 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 preglednikne u WEB preglednikne u WEB preglednik
Pretvaranje malih slova u velika i obrnutoPretvaranje malih slova u velika i obrnuto
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: Ako je ime domene u eZadatak 3: Ako je ime domene u e‐‐mail adresi mail adresi jjbigcustomer.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 != “”) {!= “”) {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’
•• b tb t ($t t 1)($t t 1) t i it i i•• substrsubstr($test, 1); ($test, 1); -- our customer service is our customer service is excellentexcellent
•• substrsubstr($test, ($test, --9); 9); -- excellentexcellent
•• substrsubstr($test, 0, 4); ($test, 0, 4); -- YourYour
•• echo echo substrsubstr($test, 5, ($test, 5, --13);13); ‐‐ ispisuje: ispisuje: customercustomer serviceservice
10.5.2011
12
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; // p; // p
}}
–– provjera ispravnosti eprovjera ispravnosti e‐‐mail adresemail adrese
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");pp ($ , );($ , );
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 zamjenazamjenamixed 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, stringstringzamjena, 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 predstavlja bilo koji srugisrugi znakznak
–– 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
10.5.2011
13
•• [[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 velikoveliko, vrlo , vrlo vrlovrlo velikoveliko
•• 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: \\., ., \\{, {, \\$, $, \\\\
•• 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 FormFormMailMail
•• 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