Definitie
string este un tip de date folosit pentru a reprezenta siruri de caractere. Valorile de tip string se scriu (de cele mai multe ori) intre ghilimele simple (ex: $s = 'abc') sau intre ghilimele duble (ex: $s = "abc").
Exista diferente foarte importante intre cele doua sintaxe (folosirea ghilimelelor duble sau simple). Un string intre ghilimele simple este reprezentat exact asa cum este scris.
In schimb, anumite caractere ce apartin unui string intre ghilimele duble vor avea
inteles special.
Mai precis, in stringurile cu
ghilimele duble se intampla doua lucruri:
- variabilele sunt inlocuite cu valoarea lor
- caracterele de control (newline, tab) pot fi reprezentate prin caracterul \ (backslash) urmat de alte caractere. ex: \n (newline) , \t (tab)
Nota
| In browser (in HTML), newline-ul (\n) este interpretat ca un simplu spatiu. In schimb, cand vedem sursa paginii HTML newline-ul este chiar trecerea pe o linie noua.
Pentru a vizualiza in browser un newline trebuie, sa folosim <br /> |
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
8
9
| <?php
$numar = 5;
$d = "Numarul este $numar \n";
echo $d;
$e = "Linie2\nLinie3";
echo $e;
?> |
| 1
2
3
| Numarul este 5
Linie2
Linie3 |
|
acelasi exemplu, folosind
ghilimele simple (variabilele nu sunt substituite, si, in plus, secventa "\n" nu mai este speciala):
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
8
9
| <?php
$numar = 5;
$d = 'Numarul este $numar \n';
echo $d;
$e = 'Linie2\nLinie3';
echo $e;
?> |
| 1
| Numarul este $numar \nLinie2\nLinie3 |
|
Caracterul backslash (\) indeplineste rolul de a reprezenta caractere de control in stringurile cu ghilimele duble asa cum am vazut mai sus,
dar mai indeplineste un rol, acela de
escape character, adica ajuta la anularea caracterului special pentru anumite caractere pentru inserarea acestora in interiorul stringului.
De exemplu, nu putem insera (decat precedate de backslash) ghilimele duble in interiorul unui string pe care-l scriem intre ghilimele duble , pentru ca interpretorul PHP va termina stringul acolo unde intalneste ghilimele duble. Similar, daca dorim inserarea caracterului dolar ($) in interiorul unui string cu ghilimele duble, interpretorul va incerca sa gaseasca o variabila, pentru a-i anula acest sens (de inceput de variabila) trebuie sa-l precedam cu backslash (\). La fel si in cazul inserarii ghilimelelor simple in interiorul unui string intre ghilimele simple.
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?php
$s = 'Il cheama O\'Connor. Probabil e irlandez ?';
echo $s;
echo "\n";
$s = "Caracterul \ are rol de \"escape character\" ";
echo $s;
echo "\n";
$s = "Aici \\n nu voi mai avea un newline desi sunt intre ghilimele duble";
echo $s;
echo "\n";
$numar = 5;
$s ="Voi scrie chiar numele variabilei \$numar";
echo $s;
?> |
| 1
2
3
4
| Il cheama O'Connor. Probabil e irlandez ?
Caracterul \ are rol de "escape character"
Aici \n nu voi mai avea un newline desi sunt intre ghilimele duble
Voi scrie chiar numele variabilei $numar |
|
Sintaxa heredoc
Sintaxa
heredoc este folosita pentru reprezentarea stringurilor in mod similar cu ghilimelele duble, prin urmare variabilele sunt inlocuite cu valorile lor, si pot fi inserate caractere de control cu ajutorul caracterului \.
Heredoc are totusi un avantaj fata de ghilimelele duble, pentru stringuri mai complexe in care probabilitatea sa apara chiar ghilimelele duble in interiorul stringului este foarte mare. Mai ales cand stringul respectiv este cod html, si atributele din html sunt inconjurate de ghilimele duble.
Pentru a folosi heredoc, scriem <<< de la capatul randului, apoi imediat un sir de caractere (numit identificator) apoi newline (trecem la linia urmatoare) si scriem sirul dorit. Apoi pe o noua linie, de la capat, scriem din nou identificatorul urmat de
;.
Sursa script | Sursa HTML in browser | Vizualizare in browser |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| <?php
$prenume = 'John';
$nume = 'Doe';
$s = <<<STR
<table border="1" cellspacing="0" cellpadding="4">
<tr>
<td>$prenume</td>
<td>$nume</td>
</tr>
</table>
Da, prenumele lui este "$prenume"
STR;
echo $s;
?> |
| 1
2
3
4
5
6
7
| <table border="1" cellspacing="0" cellpadding="4">
<tr>
<td>John</td>
<td>Doe</td>
</tr>
</table>
Da, prenumele lui este "John" |
|
Da, prenumele lui este "John" |
Concatenarea stringurilor
Important
Operatorul pentru concatenarea (unirea) stringurilor este punct (.).
Unul din cazurile cand avem nevoie de concatenare apare daca vrem sa afisam valoarea unei variabile in interiorul unui string intre
ghilimele simple.
Sursa script | Vizualizare in browser |
1
2
3
4
5
6
7
8
9
| <?php
$nume = 'Maria';
echo 'Se numeste $nume';
echo '<br /> ';
echo 'Se numeste '.$nume;
echo '<br /> ';
echo "Se numeste $nume";
?> |
| Se numeste $nume Se numeste Maria Se numeste Maria |
Alte exemple de concatenare:
Sursa script | Vizualizare in browser |
1
2
3
4
5
6
7
| <?php
$prenume = 'Ion';
$nume = 'Popescu';
$str = '<b>'.$prenume.' '.$nume.'</b>';
echo $str;
?> |
| Ion Popescu |
Important
Operatorul .= (punct urmat de egal) este echivalent cu adaugarea stringului din dreapta operatorului la stringul din stanga. Adica $str .= 'ceva';
este echivalent cu $str = $str . 'ceva';
Sursa script | Vizualizare in browser |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <?php
$str = '';
$cnp = '1720215440033';
$prenume = 'Ion';
$nume = 'Popescu';
$str .= $prenume;
$str .= ' ';
$str .= $nume;
$str .= ' are cnp: ';
$str .= $cnp;
echo '<h2>'.$str.'</h2>';
?> |
| Ion Popescu are cnp: 1720215440033 |