Professional Documents
Culture Documents
print "Hello";
ili:
echo "Hello";
Kada je potrebno nešto komplikovanije ispisivanje teksta, koristi se funkcija printf(), koja
prikazuje statički tekst i dinamičke informacije, a njena primena izgleda ovako:
Kao što je već napomenuto, da biste dodelili string vrednost nekoj promenljivoj, neophodno
je da je uokvirite znacima navoda. Unutar teksta koji dodeljujete nekoj promenljivoj
moguće je koristiti i specijalne karaktere.
PHP
programming.
Ukoliko bismo želeli da na strani bude ispisan string onako kako je napisan i u PHP kodu,
dakle, bez interpretiranja HTML tagova, iskoristili bismo funkciju htmlspecialchars().
Primer:
Izbor jednostrukih ili dvostrukih navodnika pravi razliku prilikom ispisivanja promenljivih.
Promenljiva napisana unutar dvostrukih navodnika biće pročitana, odnosno biće prikazana
njena vrednost, dok će promenljiva napisana pod jednostrukim navodnicima biti tretirana
kao bilo koji drugi tekst.
$x = 10;
echo 'Test $x';
$x = 10;
echo "Test $x";
Ukoliko ipak želite da koristite dvostruke navodnike, ali da unutar njih prikažete naziv
promenljive, ili drugi specijalni karakter koji ne treba interpretirati, možete se poslužiti
escape karakterom (\).
Primer:
$x = 10;
echo "My variable is \$x.";
Upotreba escape karaktera je posebno korisna kada imamo potrebu da u stringu koji se
prikazuje na strani postavimo navodnike.
Primer:
$x = 10;
echo "Hello, \"World\".";
Jedna od najčešće korišćenih operacija nad stringovima jeste nadovezivanje (tačka .). Pored
ovog operatora, PHP sadrži i veliki broj ugrađenih funkcija za rad sa tekstom. Neke od njih
su:
Primer:
Možemo da, kao treći argument, ukoliko string sadrži i neki specijalni karakter, uključimo i
njega u okviru parametara funkcije, kao što je prikazano u primeru:
Nakon izvršenja, uočavamo da, ukoliko kao treći argument nije uključen specijalni karakter
u okviru stringa, niz na izlazu će ga zanemariti i ispisati samo niz ostalih reči. Dok, ukoliko
je naveden kao argument, niz na izlazu će uzeti u obzir i specijalni karakter.
Primer:
Sada ćemo prikazati upotrebu funkcija za rad sa stringovima u slučaju pretvaranja u velika
ili u mala slova. Pogledajmo primer koda:
Rezultat na strani:
I jedna i druga funkcija formatiraju tekst na osnovu argumenta format, s tom razlikom što
ga funkcija printf() samo prikazuje, a funkcija sprintf() ga smešta u novu promenljivu. Prvi
argument ovih funkcija, "format", predstavlja instrukcije za formatiranje. Svaka instrukcija
za formatiranje ima sledeći oblik:
%pad - duzina.dectip
pri čemu:
Primer 1.
$numOfBoys = 3;
$numOfGirls = 2;
printf("%s boys and %s girls", $numOfBoys, $numOfGirls);
ispisaće poruku:
Primer 2.
$price = 30000;
$product = "Samsung TV";
$message1 = sprintf("%s costs %09.2f dollars. ", $product, $price);
$message2 = sprintf("%'.-20s%9.2f", $product, $price);
echo $message1;
echo $message2;
ispisaće poruku:
U drugoj poruci, prva instrukcija za formatiranje naziva proizvoda je %'.-20s. Ona govori da
promenljivu $product treba prikazati poravnato ulevo, sa 20 karaktera, pri čemu se prazna
mesta popunjavaju tačkom. Cena se prikazuje na sličan način kao i u prvoj poruci, s tom
razlikom što nije naveden karakter koji popunjava prazna mesta, pa se koristi
podrazumevani space karakter.
Kada želite da stringove preklapate jedne drugima, koristi se funkcija substr_replace(), koja
ima osnovni oblik:
Primer upotrebe:
$numbers = "123456789123456789";
echo substr_replace($numbers, "#########",2,8);
12#########23456789
Vežba 1
Problem: Potrebno je kreirati program koji će broj bankovnog računa iz pisane forme
prebaciti u elektronsku formu.
Napisati funkciju koja će kao ulazni parametar uzimati broj računa u pisanoj formi, a na
mesto pozivanja prikazivati račun u elektronskoj formi.
Rešenje:
<?php
function convertBankAccount($account){
$elecAccount = substr_replace($account,'0000000',3,0);
return $elecAccount;
}
echo convertBankAccount(30012345678);
?>
$elecAccount = substr_replace($account,'0000000',3,0);
Vežba 2
Problem:
$userName i $password
$userName = "myName<";
$password = "myPa>sswo'rd";
Rešenje:
<?php
function clean_string($string)
{
$string = str_replace("<", "", $string);
$string = str_replace(">", "", $string);
$string = str_replace("'", "", $string);
return $string;
}
$userName = "myName<";
$password = "myPa>sswo'rd";
$userName = clean_string(trim($userName));
$password = clean_string(trim($password));
if(trim($userName) == "" || trim($password) == "")
die("invalid credentials");
echo "valid credentials";
?>
Ispis na izlazu:
valid credentials
Pri pozivu funkcije clean_string kao argument prosleđujemo vrednost koju vrati ugrađena
funkcija trim nakon što joj kao argument prosledimo string koji se obrađuje.
die("invalid credentials");
Vežba 3
Dat je sledeći string:
Rešenje 1:
Ovo rešenje funkcioniše samo kod kontrola koje imaju mogućnost prepoznavanja novog
reda u tekstu:
Rešenje 2:
$lipsum je promenljiva koja sadrži tekst koji će biti obrađen. Kako ne želimo da prelazak u
novi red izvršimo na polovini reči, moramo čitav string razdvojiti na elemente niza. Upravo
to postižemo metodom explode(), koja prihvata dva parametra. Prvi prametar je separator,
dok je drugi parametar string koji se obrađuje. Sada imamo pripremljen niz reči.
Unutar petlje proveravamo da li je broj karaktera stringa koji trenutno predstavlja sadržaj
promenljive $tmpContent sabrane sa samom reči iz niza manji od 15. Suštinski da li je ta
jedna reč sa razmacima manja od 15 karaktera. Ukoliko je uslov ispunjen, to znači da reč
može stati u red i da treba proveriti da li je moguće u isti red postaviti još jednu reč.
Ukoliko ovaj uslov nije ispunjen, to znači da za reč nema mesta u redu i da treba taj red
ispisati na strani.
Problem:
Potrebno je formatirati string tako da, ukoliko ima više od 15 karaktera, bude isečen, tako
da poslednja tri karaktera do 15. karaktera budu tačke. Na primer:
Rešenje:
<?php
$lipsum = "Lorem Ipsum is simply dummy text of the printing and
typesetting industry.";
$izlaz = (strlen( $lipsum ) > 15) ?substr( $lipsum, 0, 12 )."...":
$lipsum;
echo $izlaz;
?>
Zadatak koji je ovde prikazan predstavlja jedostavan primer upotrebe funkcije substr() koja
radi sa tri parametra. Prvi parametar je string koji se obrađuje, drugi parametar je početni
indeks za odsecanje stringa, dok je treći broj karaktera koji će biti uzet u obzir, počevši od
početnog indeksa. Takođe, iskorišćen je i ternarni operator. U zagradi za ovaj operator
postavljamo uslov nakon kog sledi znak pitanja i dve moguće vrednosti za string. Stringovi
se odvajaju simbolom dvotačke (:).
Nakon izvršavanja ovog operatora potrebno je na strani prikazati vrednost promenljive koja
čuva izlaz.
Vežba 5
Problem:
Potrebno je napisati program koji će za navedeni string vraćati broj reči koje se nalaze u
njemu; string promenljiva ima sadržaj:
"Lorem Ipsum is simply dummy text of the printing and typesetting industry."
Rešenje:
Cilj ove vežbe je prikaz zanimljive funkcije str_word_count, koja prihvata jedan obavezni i
dva opciona parametra. Funkcija prebrojava reči koje se nalaze u stringu. Definisanjem
drugog parametra može se zahtevati od funkcije da vrati specifičan rezultat.
Vežba 6
Problem:
$numberOfCharacters = 50;
$characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Potrebno je napraviti aplikaciju koja na osnovu prosleđenog seta karaktera i broja generiše
šifru. Šifra mora sadržati mala i velika slova iz liste karaktera $characters. Šifra takođe
mora imati onoliko karaktera koliko je naznačeno u promenljivoj $numberOfCharacters.
Rešenje:
<?php
$numberOfCharacters = 50;
$characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$allCharacters = $characters . strtolower($characters);
$pass = "";
for($i=0;$i<$numberOfCharacters;$i++)
$pass.=$allCharacters[rand(0,strlen($allCharacters)-1)];
echo $pass;
?>
Objašnjenje rešenja:
$name = "James";
echo 'My name is $name';
a) My name is $name
b) My name is James
c) 'My name is $name'
d) 'My name is James'
e) Na ekranu će biti prikazana greška.
Objašnjenje:
Izbor jednostrukih ili dvostrukih navodnika pravi razliku prilikom ispisivanja promenljivih.
Promenljiva napisana unutar dvostrukih navodnika biće pročitana, odnosno biće
prikazana njena vrednost, dok će promenljiva napisana pod jednostrukim navodnicima
biti tretirana kao bilo koji drugi tekst.
Rezime