Lucrul cu șiruri de caractere
Șirurile de caractere joacă un rol important, iar sarcinile de parsare a șirurilor de caractere sunt destul de frecvente în PHP, așa că vom examina câteva funcții de bază pentru lucrul cu șiruri de caractere.
Șirurile de caractere reprezintă un anumit text care este încadrat în ghilimele simple sau duble:
$str1 = "Hello";
$str2 = 'Welcome';
Dar, de asemenea, PHP permite definirea unui șir de caractere fără ghilimele, folosind operatorul <<<, urmat de o etichetă de terminare a șirului:
$s = <<< LABEL
Hello World!
Bye World..
LABEL;
echo $s;
În acest caz, "LABEL" este numele etichetei care indică începutul și sfârșitul șirului. Numele etichetei este arbitrar. Adică tot ce este situat între <<< LABEL și LABEL; va reprezenta șirul $s. În particular, browser-ul ne va afișa următoarele:
Hello World! Bye World..
Și în acest caz, la fel ca într-un șir de caractere obișnuit, putem folosi variabile:
$name = "Tom";
$age = 36;
$s = <<< USER
Name = $name
Age = $age
USER;
echo $s;
Accesarea caracterelor dintr-un șir
PHP permite accesarea caracterelor individuale dintr-un șir ca și cum ar fi elemente ale unui array prin index numeric:
$str = "Hello Tom";
echo $str[0];// vom obține primul caracter - H
$str[1] = "i"; // schimbăm al doilea caracter
echo "<br>" . $str . "<br>"; // Hillo Tom
Indexarea caracterelor, la fel ca în array-uri, începe de la zero.
Funcții speciale și extensia mbstring
Pe lângă unele posibilități de bază pentru lucrul cu șiruri de caractere, PHP oferă și o serie de funcții speciale. Pentru unele dintre ele este necesară activarea extensiei speciale - mbstring.dll.
Pentru a activa această extensie, deschidem fișierul de configurare PHP - php.ini și găsim următoarea linie:
;extension=mbstring
O decomentăm, eliminând punctul și virgula.
extension=mbstring
De asemenea, ne asigurăm că este indicat calea către folderul cu extensii.
Găsim în fișierul php.ini linia:
;extension_dir = "ext"
Această linie indică directorul cu extensii pentru PHP. Implicit, toate extensiile sunt situate în folderul ext. Decomentăm această linie, eliminând punctul și virgula, și indicăm calea completă către folderul ext.
De exemplu, în cazul meu, folderul php este situat în rădăcina discului C (OS Windows), astfel indic calea "C:\php\ext":
extension_dir = "C:\php\ext"
Și deoarece am modificat fișierul php.ini, repornim serverul web Apache.
Activarea extensiei mbstring va permite utilizarea unor funcții suplimentare pentru lucrul cu șiruri de caractere, care nu sunt disponibile în setul standard PHP (aceste funcții încep de obicei cu prefixul mb_).
Funcțiile strpos()
Funcția strpos($str, $search) returnează poziția subșirului sau caracterului $search în șirul $str sau valoarea false, dacă șirul $str nu conține subșirul $search:
$input = "This is the end";
$search = "is";
$position = strpos($input, $search); // 2
if($position!==false)
{
echo "Poziția subșirului '$search' în șirul '$input': $position";
}
La utilizarea acestei funcții, trebuie de avut în vedere că indexarea caracterelor în șir începe de la zero, deci poziția caracterului "T" va fi egală cu 0.
De aceea, comparația $position!=false va funcționa incorect, deoarece false și 0, la comparare și conversie la un tip comun, vor reprezenta aceeași valoare. De aceea, în acest caz este corect să se folosească doar operația de echivalență: $position!==false sau $position===false.
Acum aplicăm funcția într-un alt exemplu:
$input = "Mama a spălat geamul";
$search = "spă";
$position = strpos($input, $search); // 7
Funcția strrpos()
Funcția strrpos() este similară funcției strpos(), doar că caută poziția ultimei apariții a subșirului în șir:
$input = "This is the end";
$search = "is";
$position = strrpos($input, $search); // 7
Funcția trim()
Funcția trim($str) elimină spațiile inițiale și finale, precum și caracterele de control \n, \r, \t:
$input = " Mama a spălat geamul ";
$input = trim($input);
Schimbarea registrului
Pentru a converti șirul în litere mici, se folosește funcția strtolower:
$input = "The World is Mine";
$input = strtolower($input);
Pentru a converti șirul în litere mari, se folosesc funcțiile strtoupper(), care funcționează similar.
Funcția strlen()
Funcția strlen() returnează lungimea șirului, adică numărul de caractere din el:
$input = "Hello world";
$num = strlen($input);
echo $num;
Obținerea unui subșir
Aplicând funcția substr($str, $start [, $length]), putem obține dintr-un șir partea sa specificată. Această funcție taie șirul $str, începând de la caracterul din poziția $start până la sfârșitul șirului. Cu ajutorul unui parametru opțional $length, putem specifica numărul de caractere extrase.
$input = "The world is mine!";
$subinput1 = substr($input, 2);
$subinput2 = substr($input, 2, 6);
echo $subinput1;
echo "<br>";
echo $subinput2;
Înlocuirea subșirurilor
Pentru a înlocui o anumită parte a unui șir, se folosește funcția str_replace($old, $new, $input). Această funcție înlocuiește în șirul $input toate aparițiile subșirului $old cu subșirul $new, ținând cont de registru:
$input = "Mama a spălat geamul";
$input = str_replace("spăl", "stric", $input);
echo $input;