Presentation is loading. Please wait.

Presentation is loading. Please wait.

Perpunimi i stringjeve

Similar presentations


Presentation on theme: "Perpunimi i stringjeve"— Presentation transcript:

1 Perpunimi i stringjeve
Leksion 11.2

2 Ne kete leksion do te shohim:
Si te ndahen stringjet Si te merret nje pjese e stringut (substring) nga nje string Si te perdoren indekset numerike te stringjeve Si te zevendesohet nje string me nje string tjeter

3 Marrja e nje pjese te stringut
Marrja e nje pjese te stringut eshte te dish se ne ç’vend te stringut ndodhet informacioni qe ju deshironi (nje string tjeter). Pra duhet te dihet indeksi i karakterit te pare dhe gjatesia e stringut qe ju doni te merrni. Psh: supozojme se keni numrin e sigurise se nje personi (Social Security number) te ruajtur ne nje string dhe deshironi qe te perdorni 4 shifrat e fundit te ketij numri, si kod PIN. Supozojme se stringu eshte i formatuar ne menyre te tille qe te jete thjesht nje sekuence prej 9 numrash, pa vija ndarese, hapesira apo karaktere ndarese te numrave. Pra nese numri eshte , ai ruhet ne nje variabel si : $SSN = ‘ ’; Kujdes: Ky string duhet te vendoset brenda thonjezave, sepse perndryshe do te humbiste zeron e pare, duke u konsideruar si nje numer.

4 Marrja e nje pjese te stringut
Tani, duam te marrim 4 karakteret e fundit te nje stringu prej 9 karakteresh. Perdorim funksionin substr (substring). Sintaksa e tij eshte: string substr(string str, int start [, int length]) str eshte stringu fillestar, nga i cili duam te marrim nenstring, start eshte indeksi i karakterit te pare qe do te merret, dhe parametri opsional length eshte gjatesia e nenstringut qe duam te marrim. Nese nuk e perfshijme parametrin length, nenstringu qe do te kthehet do te shkoje deri ne fund te stringut.

5 Marrja e nje pjese te stringut
Pra per te marre 4 karakteret e fundit, perdorim: $SSN_lastFour = substr($SSN, 5, 4); 5 nenkupton qe do te fillojme ne pozicionin me indeks 5, i cili eshte karakteri i katert, duke filluar nga fundi i stringut. Parametri 4, i tregon substr() qe te na ktheje 4 karaktere. Shenim: Kur marrim nje nenstring nga nje string, ky nenstring nuk hiqet nga stringu. Psh: $SSN do te jete perseri me 9 karaktere dhe do te jete i njejti siç ishte ne fillim. Ne nuk ndryshojme vete stringun, por thjesht po kontrollojme se çfare ka brenda stringut.

6 Marrja e nje pjese te stringut
Supozojme se nuk jemi te sigurte nese numri i sigurise (Social Security number), i ka te ndare grupet e numrave me ndonje karakter. Secila nga vleredheniet e meposhtme mund te jete e vertete: $SSN = ‘ ’; ose $SSN = ‘ ’; ose $SSN = ‘ ’; Pavaresisht nga pjesa tjeter a stringut, nese e dime qe 4 karakteret e fundit te stringut, jane 4 shifrat e fundit te numrit, mund te marrim 4 karateret e fundit duke filluar nga fundi.

7 Marrja e nje pjese te stringut
Numerimi nga fundi eshte i rendesishem sepse nuk mund te jemi te sigurte nese gjatesia e stringut eshte 9 apo 11, dhe do te kishim probleme nese do te fillonim nga fillimi. Ndersa nese numerojme nga fundi, nenstringu qe ne kerkojme, do te filloje gjithmone 4 karaktere nga fundi. Shembull: Per te shprehur kete ne funksionin substr, perdorim nje pozicion fillestar negativ, ne menyre qe t’i tregojme funksionit qe te numeroje nga fundi i stringut ne vend qe te filloje nga fillimi. Megjithate kur numerojme nga fundi, karakteri i pare eshte –1 (jo 0 apo -0). $SSN_lastFour = substr($SSN, -4);

8 Marrja e nje pjese te stringut
Vereni qe eshte hequr parametri i gjatesise, sepse ne kerkojme te marrim çdo karakter deri ne fund te stringut. Po te vendosim kete parameter, ai percakton se sa i gjate do te jete nenstringu qe do te kthehet. Psh: nese gjatesia eshte 2, nenstringu do te jete me 2 karaktere. $str = ‘abcdef’; echo substr($str, 0, 2); // outputs ‘ab’

9 Marrja e nje pjese te stringut
Parametri i gjatesise mund te jete edhe negativ, qe do te thote se numerimi fillon nga fundi. Pra pozicioni perfundimtar per stringun do te jete length karaktere nga fundi i stringut. Karakteri ne poziocionin e fundit te percaktuar, perfshihet ne nenstring. Perseri karakteri i pare ne numerimin nga fundi eshte -1. Shembull: $str = ‘abcdef’; echo substr($str, 0, -2); // outputs ‘abcd’ Ketu, ne vend qe gjatesia e stringut te jete 2, nenstringu do te jete aq i gjate sa i duhet per te arritur deri ne 2 pozicione nga fundi (pozicioni -2). Pra nenstringu fillon ne fillim (0) dhe perfundon dy karaktere perpara fundit.

10 Marrja e nje pjese te stringut
KUJDES Meqe indekset e pozicioneve te stringut mund te jene te ngaterrueshme, eshte mire qe te kontrollohet rezultati i thirrjeve te funksionit substr me disa stringje te ndryshme, ne menyre qe te siguroheni qe eshte ne rregull. Nese nuk eshte, mund te rregulloni parametrat qe i kaloni. Nese vazhdoni punen pa e testuar, me vone do te jete shume me e veshtire qe te gjendet gabimi.

11 Marrja e nje pjese te stringut
Nganjehere mund te na nevojitet gjatesia e stringut (Psh: ne nje fushe te databazes, me gjatesi te kufizuar). Per te gjetur gjatesine e stringut perdorim funksionin strlen, me sintaksen e meposhtme: int strlen(string str) Shembull: echo strlen($str); Ky funksion kthen numrin e karaktereve te stringut (duke perfshire edhe karaktere si hapesirat dhe \n): $str = ‘This is a string.’; $str2 = “Newlines!\nOne\nTwo”; echo strlen($str) . ‘, ‘ . strlen($str2); Rezultati i ketij kodi eshte 17, 17. Vereni qe \n interpretohet si nje karakter i vetem. Prandaj dy stringjet jane me gjatesi te njejte.

12 Gjetja e nenstringjeve
Le te shohim paraqitjen si string te nje numri te ngritur ne nje fuqi. Per te interpretuar nje string te tille duhet ta ndajme stringun ne dy pjese: numri dhe fuqia: $numToPower = ‘20^2’; Kujdes sepse ky shembull, edhe mund te ndryshohet, pra stringu mund te ishte 2^2, 3^5, ose 5^10. Prandaj nuk e kemi idene se ku ndodhet ^, apo ku fillon apo mbaron secili numer. Prandaj ne menyre qe te marrim numrat si nenstringje, me pare duhet te percaktojme se ku fillon e ku mbaron secili numer. E dime qe numri i pare fillon tek 0, dhe numri i fundit do te mbaroje ne fund te stringut. Ajo çfare na duhet te gjejme eshte se ku mbaron numri i pare dhe ku fillon i dyti. Kete do ta percaktonim me lehtesi, nese do ta dinim se ku ndodhet karakteri ^. Pra na duhet te gjejme pozicionin e ^.

13 Gjetja e nenstringjeve
Per kete na duhet funksioni strpos, qe ka kete sintakse: int strpos(string str, string find [, int start]) str eshte stringu ne te cilin po kerkojme, find eshte stringu qe duam te gjejme. Parametri opsional start perdoret per te kufizuar kerkimin, psh. nese e dime qe ka 3 pika (.) ne nje string, por duam te gjejme piken e dyte, mund te kerkojme per te pasi te kemi kaluar piken e pare.

14 Gjetja e nenstringjeve
Per te gjetur karakterin ^ ne shembullin e meparshem perdorim shprehjen: $caretPos = strpos($numToPower, ‘^’); Nese $numToPower do te ishte 20^2, $caretPos do te jete 2 (indeksi i ^ brenda stringut) $numToPower: ^ 2 INDEX: [0] [1] [2] [3] String Length: Ne figure shihet qe vlera e kthimit te funksionit strpos(‘20^2’, ‘^’) eshte indeksi i pozicionit te karakterit ^.

15 Gjetja e nenstringjeve
Tani, per te marre dy numrat na duhet vetem te perdorim $caretPos, me ane te te cilit mund te gjejme fillimet dhe fundet e numrave ne lidhje me ^. Megjithate, ka nje komplikacion. Funksioni substr nuk merr si parametra nje pozicion fillimi dhe nje pozicion fundi, por nje pozicion fillimi dhe nje gjatesi. Per kete na duhet te llogarisim gjatesine e numrit te pare. (Ndersa gjatesine e numrit te dyte mund te mos e percaktojme sepse ai mbaron aty ku mbaron stringu.) Pozicioni i ^ eshte 2, dmth ka 2 karaktere perpara ^, ato jane ne pozicionet 0 dhe 1. Nese pozicioi do te ishte 3 atehere do te kishte 3 karaktere perpara (ne pozicionet 0, 1, dhe 2). Prandaj mund te perdorim pozicionin e ^, si gjatesi te nenstringut per numrin e pare. Ndersa numri i dyte fillon ne pozicionin qe vjen menjehere pas ^, pra $caretPos + 1.

16 Gjetja e nenstringjeve
Kodi i meposhtem merr dy numrat nga $numToPower: <?php /* demonstration of strpos and substr functions */ $numToPower = ‘20^2’; $caretPos = strpos($numToPower, ‘^’); $num = substr($numToPower, 0, $caretPos); $power = substr($numToPower, $caretPos + 1); echo “You’re raising $num to the power of $power.”; ?>

17 Zevendesimi i stringjeve
Nje zevendesim stringjesh ndodh kur nje string i veçante zevendesohet nga nje string tjeter brenda nje stringu me te gjate. Funksioni str_replace kryen nje zevendesim te thjeshte te stringjeve. Sintaksa e tij eshte: string str_replace(string find, string replace, string str) Ku find eshte stringu qe duhet gjetur, replace stringu qe do te zevendesoje stringun find dhe str eshte stringu me te cilin do te kryhet zevendesimi. Shenim Vereni qe str_replace kthen nje string. Menyra e vetme per te marre rezultatin e zevendesimit eshte qe te ruhet kjo vlere kthimi (ose ne nje variabel te ri, ose perseri ne variablin fillestar te kaluar si parameter str). Funksioni str_replace nuk e modifikon vete str.

18 Zevendesimi i stringjeve
Perdorimi i funksionit str_replace eshte mjaft i drejtperdrejte. Le te supozojme qe stringu $text permban nje tekst te dhene nga perdoruesi, i cili do te shfaqet ne web site. Nese perdoruesi ka shtypur Enter gjate kohes qe po shtypte tekstin, ai do te kete futur \n ose \r\n ne tekst. Megjithate keto karaktere injorohen nga browseri, kur ai interpreton kodin HTML. Ne menyre qe te shfaqen ne browser kalimet ne rreshta te rinj duhet te zevendesojme \n me nje tag <br>, si me poshte: $text = str_replace(“\n”, ‘<br>’, $text);

19 Zevendesimi i stringjeve
KUJDES Ndryshimi ndermjet thonjezave dyshe dhe teke eshte shume i rendesishem ne kete shembull. Karakteri newline (\n) qe i kalon si parameter funksionit str_replace duhet te jete i njejte me ate ne $text. Prandaj duhet te siguroheni qe te vendosni newline ne thonjeza dyshe. Ashtu si me te gjithe stringjet e tjere vendosja e tij ne thonjeza teke e parandalon PHP qe ta interpretoje ate si rresht te ri (newline), por ben qe PHP ta interpretoje ate si nje slash dhe nje ‘n’. SHENIM Funksioni str_replace ka nje disavantazh: Ai eshte case-sensitive. Psh nese doni te gjeni vetem fjalen Fred eshte ne rregull; por nese doni te gjeni Fred, fred, dhe FRED, do t’ju duhet te perdorni funksionin pregi_replace

20 Zevendesimi i stringjeve
Funksioni str_replace mund edhe te kryeje shume zevendesime ne te njejten kohe. Secili nga tre parametrat e tij mund te percaktohet si vektor. Parametri i pare mund te jete nje vektor me disa nenstringje te ndryshme qe duhet te gjenden brenda stringut. Kur ai gjendet, per ta zevendesuar ate perdoret elementi korrespondues i vektorit, qe kalohet si parameter i dyte. Nese parametri i dyte do te ishte nje string i vetem, atehere ai string do te perdorej per te gjitha zevendesimet. Kjo mund te vazhdoje per sa stringje te jene ne vektorin e qe kalohet si parametri i trete, i cili mund te jete ose jo nje vektor. KUJDES Nese vektori per parametrin e dyte, ka me pak elemente se ai per parametrin e pare, do te perdoren stringje boshe si stringje zevendesuese per elementet qe mungojne. Nese po zevendesoni shume stringje me shume vlera, sigurohuni qe te keni nga nje vlere per secilin string qe po zevendesoni, sepse perndryshe mund t’i fshini stringjet pa i zevendesuar ato me ndonje gje.

21 Zevendesimi i stringjeve
Shembulli i meposhtem tregon zevendesimin e stringjeve “dog”, “cat”, dhe “ferret” me nje fjale te vetme “animal”: <?php /* demonstration of str_replace with array parameters */ $str = ‘My dog knows a cat that knows the ferret that stole my keys.’; $find = Array(‘dog’, ‘cat’, ‘ferret’); echo str_replace($find, ‘animal’, $str); ?> Outputi i ketij programi eshte: My animal knows a animal that knows the animal that stole my keys.

22 Zevendesimi i stringjeve
Le te provojme tani te zevendesojme secilen fjale me nga nje fjale te ndryshme: <?php /* demonstration of str_replace with array parameters */ $str = ‘My dog knows a cat that knows the ferret that stole my keys.’; $find = Array(‘dog’, ‘cat’, ‘ferret’); $replace = Array(‘wife’, ‘guy’, ‘thief’); echo str_replace($find, $replace, $str); ?> Outputi eshte: My wife knows a guy that knows the thief that stole my keys.

23 Pyetje?


Download ppt "Perpunimi i stringjeve"

Similar presentations


Ads by Google