Utisci korisnika

Pre svega želim da vam se zahvalim na veoma brzom i profesionalnom pristupu. Jovan Knežević - Hong Kong

"Želim da kazem da iako sam tek na pola, da sam oduševljena ovim načinom na koji stvari funkcionisu!" Stanislava Kraguljac, Beograd


Kompletna lista utisaka

Testiranje online

Arhitektura računara

Za one koji žele da znaju više.

Windows OS

Ovo bi svakako trebalo da probate.

Odnosi s javnošću

Koliko znate PR?

Pogledajte još neke od testova

Newsletter

Ukoliko želite da Vas redovno obaveštavamo o novostima sa Link eLearning sajta prijavite se na našu newsletter listu.

Ime:

Prezime:

Email:


Anketa

Arhiva anketa

BAZA ZNANJA


Kurs: - Core PHP Programming

Modul: Stringovi

Autor: Vladimir Marić

Naziv jedinice: Obrada stringova


Materijali vezani uz ovu lekciju:

- Test obrada stringova
- Obrada stringova (PDF dokument)



Jednostruki i dvostruki navodnici

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 da koristite i specijalne karaktere: \n (oznaka za novi red) i \t (tabulator). Na primer, sledeće naredbe:

 $string = "PHP<br>programiranje";
 echo $string;


će ispisati sledeće dve linije teksta:

 PHP
 programiranje


Specijalni karakateri će biti interpretirani na ovaj način samo ukoliko koristite dvostruke navodnike. Ukoliko se koriste sa jednostrukim navodnicima, biće prikazani bukvalno, kao niske karaktera.

Slična je situacija i sa prikazom promenljivih. Na primer:

$ime = "Marko";
$output1 = "$ime";
$output2 = '$ime';
echo $output1;
echo $output2;

 

Prva echo naredba će kao rezultat da ispiše:

Marko

 

Druga echo naredba će ispisati:

$ime

 

Ponekad je potrebno da se karakteri unutar stringa tretiraju kao obični karakteri. Na primer, ukoliko želite da ispišete poruku:

Cena proizvoda je $100.00.

 

neophodno je da koristite tzv. escape karakter (znak\ ) na sledeći način:

echo "Cena proizvoda je \$100.00.";

 

Na ovaj način dajete instrukciju PHP-u da znak za dolar u ovom tekstu ne označava ime promenljive, već da samo treba da ga prikaže.

 

Operacije nad stringovima

Jedna od najčešće korišćenih operacija nad stringovima jeste nadovezivanje (.). Pored ovog operatora, PHP sadrži i veliki broj ugrađenih funkcija za rad sa tekstom. Neke od njih su:

  • trim() – uklanja prazna mesta na početku i na kraju stringa
  • ltrim() – uklanja prazna mesta na početku stringa
  • rtrim() – uklanja prazna mesta na kraju stringa
  • str_word_count() – razbija tekst na reči i smešta ih u niz
  • strpbrk(string, char) – traži karakter char u tekstu string
  • strtoupper(string) – prebacuje sva slova u velika
  • strtolower(string) – prebacuje sva slova u mala

 

Formatiranje prikaza teksta

Funkcije printf() i sprintf() omogućavaju formatiranje teksta i brojeva, i njihovo kombinovanje. Osnovna sintaksa ovih naredbi je

printf("format",$prom1,$prom2,. . .);
$novaPromenljiva = sprintf("format",$prom1,$prom2,. . .);

 

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 su:

  • pad – karakter koji se koristi za popunjavanje slobodnih mesta, ukoliko je string kraći od navedene dužine
  • znak '-' – označava da karakteri budu levo poravnati. Ukoliko se izostavi, podrazumeva se desno poravnanje
  • duzina – broj karaktera koji se koriste za prikazivanje vrednosti
  • .dec – broj decimalnih mesta
  • tip – tip vrednosti koja se prikazuje (s za string, f za float)

 

Pogledajte sledeće primere:

1.

$brDecaka = 3;
$brDevojcica = 2;
printf("%s decaka i  %s devojcice",$brDecaka,$brDevojcica);

 

ispisaće poruku:

3 decaka i 2 devojcice

 

2.

$cena = 30000;
$proizvod = "Samsung TV";
$poruka1 = sprintf("%s kosta %06.2f dinara.\n",$proizvod,$cena);
$poruka2 = sprintf("%’.-20s%6.2f",$proizvod,$cena);
echo $poruka1;
echo $poruka2;

 

ispisaće poruku:

 Samsung TV košta 030000.00 dinara.
 SamsungTV........... 30000.00

 

U prvoj poruci prva instrukcija za formatiranje je %s i ona se odnosi na prvu promenljivu, $proizvod. Ova instrukcija će samo da ispiše vrednost promenljive. Druga instrukcija za formatiranje je %06.2f i odnosi se na drugu promenljivu, $cena. Ona govori da broj treba da bude predstavljen sa 6 karaktera i dva decimalna mesta, pri čemu je 0 karakter sa kojim se popunjavaju prazna mesta.

U drugoj poruci prva instrukcija za formatiranje naziva proizvoda je %’.-20s. Ona govori da promenljivu $proizvod treba prikazati poravnato u levo, sa dvadeset 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.

 

Vežba 1

Problem:

U aplikaciju ulaze sledeće promenljive:

$userName i $password

Potrebno je proveriti validnost ovih promenljivih, i obezbediti da ne budu prazne, kao i da ne sadrže sledeće karaktere: < > i ‘

U slučaju da je neka od promenljivih prazna, izvršenje se prekida, dok u slučaju postojanja neželjenih karaktera, dolazi do izbacivanja tih karaktera iz vrednosti promenljive.

Inicijalne vrednosti promenljivih treba da budu:

$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";
?>

 

Vežba 2

Problem:

Dat je sledeći string:

$lipsum = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. ";


Potrebno je formatirati tekst tako da se formira novi red nakon svakog 15-og karaktera:


Rešenje 1:

Ovo rešenje funkcioniše samo kod kontrola koje imaju mogućnost prepoznavanja novog reda u tekstu):

<?php
$lipsum = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
echo wordwrap($lipsum,15);
?>


Rešenje 2:

<?php
$lipsum = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
$lipsumArr = explode(" ",$lipsum);
$tmpContent="";
for($i=0;$i<sizeof($lipsumArr);$i++)
    {
        if((strlen($tmpContent . " ")+strlen($lipsumArr[$i]))<15)
            $tmpContent .= " " . $lipsumArr[$i];
        else
            {
                if($tmpContent!="")
                    {
                        echo $tmpContent . "<br>";
                    }
                        $tmpContent=$lipsumArr[$i];
            }
    }
echo $tmpContent;
?>


 
Vežba 3

Problem:

Dat je sledeći string:

$lipsum = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";


Potrebno je formatirati string, tako da, ukoliko ima više od 15 karaktera, bude isečen, tako da poslednja 3 karaktera do 15-og karaktera budu tačke. Na primer:

Lorem Ipsum ...


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;
?>


Smatrate da je ova lekcija korisna?  Preporučite je. Broj preporuka:1


Molimo Vas unesite svoje podatke i dobićete pristup besplatnim lekcijama.

Ime: 
Prezime: 
Email: