MadaLino
Moderator
 Din: Hotel Paradis
Inregistrat: acum 17 ani
Postari: 240
|
|
PHP conţine peste 70 de funcţii care lucrează cu şiruri. Această pagină descrie cele mai utilizate funcţii. Aceste funcţii vă permit să obţineţi lungimea unui şir, să eliminaţi dintr-un şir caracterele de tip spaţiu şi să convertiţi caracterele unui şir în majuscule sau minuscule.
Obţinerea lungimii unui şir
Funcţia strlen() returnează lungimea şirului specificat ca argument al funcţiei. Iată un exemplu:
$sir="ceva caractere"; $numar=strlen($sir); echo "<br>Lungimea sirului este de $numar caractere";
Eliminarea caracterelor dintr-un şir
Numeroase funcţii PHP vă permit să eliminaţi caracterele de tip spaţiu alb de la una sau ambele extremităţi ale unui şir. Caracterele de tip spaţiu alb sunt caractere precum spaţiu, tabulator şi caracter de salt la linie nouă, care nu dispun de nici o reprezentare vizibilă. Aceste funcţi sunt prezentate în tabelul de mai jos.
Funcţie Descriere chop(s) Returnează valoarea lui s, eliminând spaţiile albe de la extremitatea din dreapta a şirului. Similar cu rtrim(). ltrim(s) Returnează valoarea lui s, eliminând spaţiile albe de la extremitatea din stânga a şirului. rtrim(s) Returnează valoarea lui s, eliminând spaţiile albe de la extremitatea din dreapta a şirului. Similar cu chop(). trim(s) Returnează valoarea lui s, eliminând spaţiile albe de la ambele extremităţi.
Conversia şirurilor la majuscule sau minuscule
Funcţia strtoupper() returnează valoarea argumentului său, convertită la majuscule. Funcţia conexa strtolower() returnează valoarea argumentului său, convertită la minuscule.
Compararea şirurilor şi căutarea în şiruri
PHP furnizează patru funcţii care sunt deosebit de utile pentru compararea şirurilor. Aceste funcţii sunt enumerate mai jos. Fiecare funcţie returnează o valoare al cărei semn determină rezultatul comparaţiei. Funcţia strncasecmp() a fost adăugată în versiunea PHP 4.0.2.
Funcţie Descriere strcasecmp(s1, s2) Execută o comparaţie fără sensibilitate la diferenţa între majuscule şi minuscule. Returnează o valoare mai mică decât zero dacă s1 este mai mic decât s2, o valoare mai mare decât zero dacă s1 este mai mare decât s2, respectiv 0 în celelalte cazuri. strcmp(s1, s2) Execută o comparaţie cu sensibilitate la diferenţa între majuscule şi minuscule. Returnează o valoare mai mică decât zero dacă s1 este mai mic decât s2, o valoare mai mare decât zero dacă s1 este mai mare decât s2, respectiv 0 în celelalte cazuri. strncasecmp(s1, s2, n) La fel ca strcasecmp() doar că la comparaţie sunt luate în considerare un număr de n caractere. strncmp(s1, s2, n) La fel ca strcmp() doar că la comparaţie sunt luate în considerare un număr de n caractere.
Descoperirea şi extragerea sub-şirurilor
PHP include numeroase funcţii care găsesc şi extrag sub-şiruri, adică părţi dintr-un şir. Cele mai importante funcţii de acest gen sunt rezumate mai jos:
Funcţie Descriere strchr(s1, s2) Returnează toate şirurile s1 de la prima apariţie a şirului s2 şi până la sfârşit. Dacă s1 nu este găsit, funcţia returnează FALSE. Funcţia strstr() execută aceeaşi operaţie. stristr(s1, s2) Returnează toate şirurile s1 de la prima apariţie a şirului s2 şi până la sfârşit. Dacă s1 nu este găsit, funcţia returnează FALSE. Şirurile s1 şi s2 sunt comparate fără a se ţine cont dacă literele sunt majuscule sau minuscule. strpos(s1, s2) Returnează poziţia întreagă a primei apariţii a şirului s2 în s1. Dacă s2 nu este găsit, funcţia returnează FALSE. strrchr(s1, s2) Returnează toate şirurile s1 de la ultima apariţie a şirului s2 şi până la sfârşit. Dacă s1 nu este găsit, funcţia returnează FALSE. La comparaţie este folosit numai primul caracter al şirului s2. strstr(s1, s2) Returnează toate şirurile s1 de la prima apariţie a şirului s2 şi până la sfârşit. Dacă s1 nu este găsit, funcţia returnează FALSE. Funcţia strchr() execută aceeaşi operaţie. substr(s, start) Returnează porţiunea şirului s specificată de indexul întreg start, substr(s, start, lung) respectiv de indexurile start şi lung. Prima poziţie a şirului este poziţia 0.
Mai jos este dat un exemplu care foloseşte funcţiile de mai sus:
Cod:
<?php $s = "de la deal la vale si iar inapoi la vale mergand spre deal"; $b = "al"; $n = strpos($s, $b); echo "<br>strpos(\"$s\", \"$b\" : $n";
$n = strchr($s, $b); echo "<br>strchr(\"$s\", \"$b\" : $n";
$n = strrchr($s, $b); echo "<br>strrchr(\"$s\", \"$b\" : $n";
$rezultat = substr($s, 6, 4); echo "<br>substr(\"$s\", 6, 4): $rezultat"; ?>
O potenţială dificultate în utilizarea funcţiei strpos() constă în aceea că poate fi greu de sesizat diferenţa dintre valoarea returnată 0, care arată că sub-şirul a fost găsit în poziţia iniţiala a şirului, şi valoarea returnată FALSE, care arată că sub-şirul nu a fost găsit. Mai jos este un scurt exemplu care indică un mod adecvat de testare a valorii returnate de funcţia strpos(), astfel încât să se poată face diferenţa între cele două rezultate:
$poz = strpos(s1, s2); if ($poz === FALSE) { // sub-sirul nu a fost gasit... }
Procedeul prezentat foloseşte operatorul de identitate (== pentru a determina dacă valoarea returnată este identică (nu doar aritmetic egală cu valoarea FALSE. Dacă folosiţi în schimb operatorul de egalitate (= , este posibil ca rezultatul să fie incorect; FALSE are valoarea numerică 0, valoare returnată şi dacă sub-şirul este găsit în poziţia initială a şirului. Acest procedeu presupune utilizarea versiunii PHP 4.0b3 sau a unei versiuni ulterioare; în versiunile anterioare ale limbajului PHP, funcţia strpos() returna o valoare şir.
Înlocuirea unui sub-şir
O operaţie frecvent folosită în programare constă în găsirea unui sub-şir şi înlocuirea sa cu o valoare nouă. PHP are două funcţii deosebit de utile pentru asemenea operaţii, şi anume str_replace()şi substr_replace().
Funcţie Descriere str_replace(cauta, inlocuire, subiect) Se caută în şirul subiect sub-şirul cauta; dacă sub-şirul este găsit, returnează valoarea subiect, înlocuindu-se prima apariţie a şirului cauta cu inlocuire. substr_replace(subiect, inlocuire, start, lungime) Returnează valoarea subiect, înlocuind sub-şirul care începe de la start şi având lungimea lungime cu şirul inlocuire.
Remarcaţi că funcţia str_replace() notează sub-şirul prin valoarea sa, în timp ce funcţia substr_replace() noteaza sub-şirul prin pozitia sa în interiorul şirului subiect. Mai jos aveţi un exemplu de utilizare a acestor funcţii:
Cod:
<?php $subiect = "de la deal la vale si iar inapoi la vale mergand spre deal"; $cauta = "deal"; $inlocuire = "DEAL"; $rezultat = str_replace($cauta, $inlocuire, $subiect); echo "<br>str_replace(\"$cauta\", \"$inlocuire\", \"$subiect\" : $rezultat";
$rezultat = substr_replace($subiect, $inlocuire, 6, 4); echo "<br>substr_replace(\"$subiect\", \"$inlocuire\", 6, 4): $rezultat"; ?>
Scrierea expresiilor regulate
În articolul Funcţii PHP pentru expresii regulate am vorbit despre semnificaţia caracterelor care se află într-un sablon. În continuare o să detaliez mai mult expresiile regulate.
- Să presupunem, de exemplu, că doriţi să specificaţi un şir care poate include litera b sau litera c. Puteţi face aceasta folosind expresia regulată [bc]. Prin includerea valorilor posibile între paranteze, formaţi o expresie regulată echivalentă cu formularea "alege oricare din aceste valori". - Să presupunem că doriţi să specificaţi un şir care poate include orice vocală; expresia regulată [aeiou] vă poate fi de ajutor. Dacă doriţi să permiteţi şi utilizarea majusculelor, puteţi scrie [aeiouAEIOU]. - Să presupunem că doriţi să specificaţi un şir care poate include orice caracter scris cu majuscule. Puteţi scrie [abcdefghijklmnopqrstuvwxyz] sau puteţi folosi forma mai compactă [a-z], unde prin cratimă se înţelege o serie de caractere consecutive. - Să presupunem că doriţi să specificaţi şirurile sat, mat şi lat. Pentru aceasta, aveţi nevoie de expresia regulată [sml]at. Semnificaţia acestei expresii regulate este următoarea: "alege oricare dintre literele s, m şi l şi scrie după litera respectivă literele at". - Dacă un caracter ^ este primul simbol menţionat între parantezele drepte, acesta are ca efect inversarea semnificaţiei expresiei regulate plasate între paranteze. De exemplu, expresia regulatî [^a-z] corespunde oricărui caracter diferit de un caracter scris cu minuscule. - Pentru a specifica faptul că o expresie regulată se poate repeta, expresia regulată va fi urmată de o pereche de paranteze acolade, care includ limitele superioară şi inferioară ale repetiţiei. De exemplu, expresia regulată [aerou]{1,4} corespunde unui şir care este compus din 1-4 vocale. - Pentru a specifica repetarea mai multor părţi ale unei expresii regulate, includeţi părţile respective între paranteze. De exemplu, expresia regulată ([sml]at){1,2} corespunde unui număr de una sau două repetări ale oricăruia dintre şirurile "sat", "mat" sau "lat". - Unele valori care se repetă sunt atât de frecvent folosite, încât au abrevieri:
Abreviere Semnificaţie + {1,n}, unde n este un număr arbitrar de mare * {0,n}, unde n este un număr arbitrar de mare ? {0,1}
- Să presupunem că doriţi să reprezentaţi o înmulţire. Dacă folosiţi caractere minuscule pentru operanzi, puteţi obţine ceva de genul [a-z]*[a-z]. Totuşi, această expresie regulată nu are semnificaţia dorită, deoarece * este un factor de repetiţie, nu un caracter dintr-un şir. Pentru a dezactiva semnificaţia specială a caracterului *, trebuie să îl prefixaţi cu un caracter backslash: [a-z]\*[a-z]. - Pentru a specifica faptul că o expresie regulată corespunde numai unui sub-şir care include caracterul iniţial al unui şir subiect, prefixaţi expresia regulată cu un caracter ^. De exemplu, expresia regulată ^[sml]at corespunde sub-şirurilor "sat", "mat" sau "lat" numai dacă acestea apar la începutul şirului subiect. - Similar, pentru a arăta că o expresie regulată corespunde numai unui sub-şir care include caracterul final al unui şir subiect, anexaţi la expresia regulată caracterul $. De exemplu, expresia regulată [sml]at$ corespunde sirurilor "sat", "mat" sau "lat" numai dacă acestea apar la sfârşitul şirului subiect. - Expresia regulată ^[sml]at$ corespunde sub-şirurilor "sat", "mat" sau "lat" numai dacă şirul subiect este identic cu unul dintre aceste sub-şiruri.
Pentru uşurinţa creeri unor expresii regulate puteţi utiliza şi un program de genul Regex Coach cu care să va faceţi propria expresie pe care apoi să o folosiţi în scripturile dvs.
_______________________________________

" Cui nu-i place cum gandesc multa ii doresc ! "

|
|