Siruri de caractere
Sirurile de caractere sunt bucati de text, bine delimitate, folosite in codul-sursa pentru diferite scopuri. PHP prezinta particularitati in modul in care sunt folosite string-urile, dupa cum se poate vedea in exemplele de mai jos.
Important! Sirurile de caractere sunt expresii (entitati ce au si returneaza o valoare). Asadar, un string poate fi folosit, pe langa, afisare, in atribuiri, la verificari, etc. In exemplele ce urmeaza s-a optat pentru afisarea sirurilor.
Siruri de caractere delimitate de ghilimele duble
Sirurile delimitate prin ghilimele duble au particularitatea ca pot interpreta variabilele si caracterele speciale din interiorul lor. Astfel, la evaluarea textului, variabilele existente in interiorul lui sunt inlocuite cu valoarea lor iar rezultatul final este returnat.
O alta particularitate a acestor siruri o reprezinta folosirea backslash-ului (caracterul \). Acesta are o functie speciala de marcare a anumitor caractere care nu pot fi incluse in mod normal intr-un text (din cauza ca sunt ele insele caractere speciale). Din acest motiv backslash-ul poarta numele de escape character.
Siruri de caractere delimitate de ghilimele simple
Sirurile delimitate prin ghilimele simple nu permit interpretarea variabilelor continute si nici a caracterelor speciale cu exceptia \' si \\
Siruri de caractere delimitate cu notatia speciala <<<
Aceste siruri de caractere au avantajul ca nu necesita marcarea (escaparea) delimitatorilor prin \' sau \". In rest, aceste stringuri sunt tratate in acelasi mod ca cele delimitate de ghilimele duble, in sensul ca permit interpretarea variabilelor si a altor caractere speciale.
Delimitatorii pot avea orice nume: TXT, START, etc, cu urmatoarele conditii:
- ambii delimitatori (de inceput si sfarsit) trebuie sa aiba acelasi nume - inainte de primul delimitator se foloseste <<< - delimitatorul de inceput nu trebuie sa fie urmat de spatiu sau alt caracter (important!) - delimitatorul de final sa fie la inceputul liniei (fara spatii inainte) - dupa delimitatorul final se pune punct si virgula ; - pot contine ghilimele " sau apostrof ' fara nevoia de a le escapa - permit interpretarea variabilelor si afisarea $a TXT; ?>
In versiunile mai noi de PHP (de la 5.3.0) a fost introdusa posibilitatea de a defini siruri prin notatia speciala <<< fara a interpreta variabilele continute. Exemplul de mai jos foloseste un sir astfel definit (vezi diferenta la delimitatorul de inceput).
Asadar $a si \n raman asa cum sunt. TXT; ?>
---------------------------------------------------
Operatii cu siruri de caractere
Mai jos sunt prezentate operatiile uzuale cu siruri de caractere si functiile oferite de limbajul PHP pentru realizarea lor.
Lungimea sirului
$s = "acesta este un text"; $sir = "stiu PHP stiu HTML stiu CSS"; # ce lungime are sirul? (numarul de caractere) print strlen( $s ); // 19
Cautarea unei secvente
# verific daca un cuvant sau text (in cazul de fata cuvantul 'PHP') apare in # sirul exprimat prin variabila $sir if( strstr( $sir, 'PHP' ) !== false ) print 'gasit'; else print "nu am gasit"; # pentru a nu tine cont de litere mari/mici se foloseste stristr if( stristr( $sir, 'phP' ) !== false ) print 'gasit';
Afisarea unui subsir
# afisez o sectiune din sir print substr( $sir, 0, 4); // stiu print substr( $sir, 5 ); // PHP stiu HTML stiu CSS print substr( $sir, 5, -3 ); // PHP stiu HTML stiu print substr( $sir, -3 ); // CSS # returnez doar un caracter din string print $sir{5}; // P print $sir{ strlen($sir)-1 }; // S
Transformarea sirului
# inlocuirea unor secvente print str_replace( "stiu", "invat", $sir); // invat PHP invat HTML invat CSS # schimb tipul literelor (mari, mici) print strtoupper( $s ); // ACESTA ESTE UN TEXT print strtolower( $sir ); // stiu php stiu html stiu css print ucfirst( $s ); // Acesta este un text print ucwords( $s ); // Acesta Este Un Text # sterg spatiile de la inceput si sfarsit: trim, ltrim, rtrim print trim(' ok '); // ok # caractere "enter" transformate in
print nl2br( "acesta e afisat pe \n 2 linii" ); // acesta e afisat pe
2 linii
Impartirea (spargerea) sirului
# impart sirul dupa un caracter, cuvant sau un alt sir $output1 = explode( "stiu ", $sir ); // impart dupa stiu /* Array ( [0] => PHP [1] => HTML [2] => CSS ) */ # impart sirul dupa o expresie regulata (regex) $output2 = preg_split( '/ /', $s ); // impart dupa spatiu /* Array ( [0] => acesta [1] => este [2] => un [3] => text ) */ # operatia inversa impartirii unui sir: $a = implode( 'invat ', $output1 ); // invat PHP invat HTML invat CSS $b = join( '-', $output2 ); // acesta-este-un-text Nota: implode si join sunt echivalente (nu exista nici o diferenta intre ele), pe cand explode si preg_split sunt diferite.
Concatenarea (legarea) sirurilor
print 'Text 1' . " legat de " . 'text 2' . "\n"; // Text 1 legat de text 2 // se pot concatena siruri rezultate din alte functii sau din variabile print ucfirst($sir) . '!!! ' . $s;
Nota: prin concatenarea sirurilor se obtine in final un singur sir, care este tratat ca atare, de sine statator. Altfel spus, prin legarea mai multor siruri se obtine o singura entitate (o singura expresie). Aceasta poate fi transmisa ca parametru unor functii sau instructiuni precum print care accepta un singur argument.
Interpretarea sirului
# parsez un Query String $str = "first=value&arr[]=foo+bar&arr[]=baz"; parse_str($str); print $first; // value print $arr[0]; // foo bar print $arr[1]; // baz parse_str($str, $output); print $output['first']; // value print $output['arr'][0]; // foo bar print $output['arr'][1]; // baz
Masuri de siguranta
In cazul in care textul provine din surse nesigure (cum ar fi un formular de comentarii), atunci este indicat sa fie "sterilizat" (sanitized), prin eliminarea elementelor ce pot fi daunatoare (tag-uri HTML, caractere speciale, etc).
print addslashes( "Baiatu' ia vino-ncoa'!" ); # Baiatu\' ia vino-ncoa\'! # functia inversa este stripslashes(); print htmlspecialchars("Test", ENT_QUOTES); # afiseaza <a href='test'>Test</a> # functia inversa este htmlspecialchars_decode() print strip_tags( "
E bold
" ); // E bold print strip_tags( "
E bold
", '' ); // E bold
II. Notiuni de baza ⇒ 4. Siruri de caractere
Moderatori: Moderators, Founder
CEO
Posts
3802
3802
Închis
Mergi la
- ADMINISTRARE FORUM
- ↳ Zona membrilor
- ↳ Regulament
- ↳ Anunțuri
- ↳ Cerere Grad
- ↳ Parteneriate
- ↳ Prezintă-te
- ↳ Cerere DNS
- ↳ SERVER DISCORD
- PUBLICITATE
- ↳ Promovare servere gaming
- ↳ Cs 1.6
- ↳ SA-MP
- ↳ Cs2
- ↳ Minecraft
- ↳ Metin 2
- ↳ GTA V
- ↳ Promovare Site
- ZONA GENERALA
- ↳ RESURSE GAMING
- ↳ Counter-Strike 1.6
- ↳ AmxModX
- ↳ Plugin-uri
- ↳ Addons-uri
- ↳ Tutoriale
- ↳ Sprays
- ↳ Harti
- ↳ CFG-uri
- ↳ Kit-uri
- ↳ Skin-uri
- ↳ Grand Theft Auto V
- ↳ Tutoriale
- ↳ Moduri
- ↳ Skin-uri
- ↳ League Of Legends
- ↳ Noutăți
- ↳ Skinuri
- ↳ Abilitati campioni
- ↳ Povestea campionilor
- ↳ Champion Spotlight
- ↳ Video-uri
- ↳ PUBG
- ↳ Tutoriale
- ↳ Skin-uri
- ↳ Video-uri
- ↳ News
- ↳ GTA San Andreas
- ↳ DOWNLOAD GTA SAN ANDREAS CURAT
- ↳ Tutoriale
- ↳ GameModes
- ↳ Resurse
- ↳ Skin
- ↳ Filescripts
- ↳ Videoclipuri
- ↳ Mod-uri
- ↳ Mod Pack's
- ↳ Minecraft
- ↳ Maps
- ↳ Skins
- ↳ Texture Packs
- ↳ Mods
- ↳ Plugins
- ↳ Metin2
- ↳ Videoclipuri
- ↳ Ghiduri Joc
- ↳ Tutoriale web
- ↳ Client-uri
- ↳ Scripting Homepage Gratuit
- ↳ Systeme C++/Py
- ↳ Știri Gaming
- ↳ Descarca Jocuri
- ↳ [PC] Descarca Jocuri
- ↳ Counter-Strike 1.6 (toate versiunile)
- ↳ Counter-Strike 2
- ↳ GTA San Andreas .rar
- ↳ League of Legends
- ↳ PUBG MOBILE PC
- ↳ Metin2
- ↳ Minecraft
- ↳ Farming Simulator 2020
- ↳ Farming Simulator 2016
- ↳ Simulare
- ↳ Actiune
- ↳ Strategie
- ↳ Aventura
- ↳ Arcade
- ↳ Puzzle
- ↳ Curse
- ↳ Sport
- ↳ Trivia
- ↳ Cazinou
- ↳ [MOBIL] Descarca Jocuri
- ↳ Masini
- ↳ Limbaje de programare
- ↳ HTML
- ↳ Tutoriale
- ↳ Index-uri
- ↳ Școala HTML
- ↳ MySql
- ↳ C / C++ / C#
- ↳ CSS
- ↳ Javascript
- ↳ PHP
- ↳ I. Introducere
- ↳ II. Notiuni de baza
- ↳ III. Notiuni avansate
- ↳ IV. Aplicatii
- ↳ V. Extra
- ↳ .htaccess
- ↳ Python
- ↳ Java
- ↳ Platforme Web
- ↳ WordPress
- ↳ Teme WordPress
- ↳ MyBB
- ↳ Descarcare MyBB 1.8.38
- ↳ Limba Română - download
- ↳ Plugin-uri
- ↳ Teme
- ↳ phpBB
- ↳ Download phpBB 3.3.14 (zip)
- ↳ Limba Română - download
- ↳ Teme
- ↳ Plugin-uri
- ↳ IPS
- ↳ Teme
- ↳ Jocuri , Videoclipuri , Filme !
- ↳ Jocuri Forum
- ↳ Videoclipuri
- ↳ Caterincă
- ↳ Filme
- ↳ Horror
- ↳ Crima
- ↳ Mister
- ↳ Actiune
- ↳ Aventura
- ↳ SF
- ↳ Western
- ↳ Razboi
- ↳ Drama
- ↳ Comedie
- ↳ Dragoste
- ↳ Stiri Filme
- ↳ Descarcă gratuit muzică
- ↳ Manele
- ↳ Romaneasca
- ↳ Petrecere
- ↳ Trap
- ↳ Albume Manele
- ↳ Albume Petrecere
- ↳ Dezvoltare WEB
- ↳ Știri IT
- ↳ Software/Programe
- ↳ Windows
- ↳ Arhivă