Lucrul cu siruri (1)

În Lectia 2 au fost prezentate sirurile, tipul de date PHP care stocheaza texte, în aceasta lectie veti învata mai multe despre utilizarea sirurilor.

1. Crearea si afisarea sirurilor

Sa recapitulam notiunile elementare ale sirurilor


Secventele escape folosite în PHP:

2. Secvente escape si cod ASCII

Ultimele doua secvente escape prezentate mai sus folosec un cod ASCII (America Standard Code for Information Interchange) pentru reprezentarea unui caracter.
Codurile ASCII sunt valori întregi, care sunt cuprinse între 0 si 255; fiecare litera sau simbol folosit frecvent în limbile vest-europene are asociat un cod ASCII. De exemplu, codul ASCII asociat literei A este 65, iar codul asociat cifrei l este 49.
Prima secventa escape necunoscuta (\xxx) va permite sa folositi reprezentarea în octal (baza 8) a unui cod ASCII pentru specificarea caracterului corespunzator. De exemplu, valoarea zecimala 65 (care este codul ASCII al literei A) poate fi reprezentata în octal sub forma 101. Ca atare, puteti reprezenta litera A folosind secventa escape "\101".
Cea de-a doua secventa escape necunoscuta (\xnn) va permite sa folositi reprezentarea hexazecimala (în baza 16) a unui cod ASCII pentru specificarea caracterului corespunzator. De exemplu, valoarea zecimala 65 (care este codul ASCII al literei A) poate fi reprezentat sub forma hexazecimala 41. Ca atare, puteti reprezenta litera A cu ajutorul secventei escape "\41".
Valoarea unui numar zecimal este suma produselor dintre fiecare cifra care îl compune si o putere a lui 10. De exemplu, numarul zecimal 123 are valoarea l x 10 la puterea 2 + 2 x 10 la puterea 1 + 3 x 10 la puterea 0 = 1x100 + 2x10 + 3x1.
Puteti determina valoarea unui numar reprezentat folosind o alta baza prin înlocuirea lui 10 cu valoarea bazei respective într-o expresie ca aceea prezentata anterior. De exemplu, valoarea hexazecimala 123 este echivalenta cu valoarea zecimala l x 16 la puterea 2 + 2 x 16 la puterea 1 + 3 x 16 la puterea 0 = l x 156 + 2 x 16 + 3 x l = 291.
Similar, valoarea în octal 123 este echivalenta cu valoarea zecimala 1x8 la puterea 2 + 2x8 la puterea 1 + 3x8 la puterea 0 = 1x64 + 2x8 + 3xl=83.
Daca vi se pare complicat sa calculam astfel, nu intrati în panica; în continuare veti învata sa determinati valoarea în octal sau hexazecimal echivalenta cu orice valoare zecimala, folosind functii PHP.

3. Utilizarea codurilor ASCII

Numeroase functii PHP sunt deosebit de folositoare la utilizarea codurilor ASCII. Aceste functii sunt enumerate în tabelul urmator.

Functii folositoare în utilizarea codurilor ASCII
Functie Descriere
chr(/n) - Returneaza caracterul având codul ASCII dat de "n"
dechex(n) - Returneaza valoarea hexazecimala echivalenta cu valoarea zecimala data de "n"
decoct(n) - Returneaza valoarea în octal echivalenta cu valoarea zecimala data de "n"
hexdec(n) - Returneaza valoarea zecimala echivalenta cu valoarea hexazecimala data de "n"
octdec(n) - Returneaza valoarea zecimala echivalenta cu valoarea în octal data de "n"
ord(c) - Returneaza codul ASCII echivalent caracterului "c"
Iata un exemplu de utilizare a functiei ord() pentru a determina codul ASCII corespunzator unui anumit caracter:
<?php
$c = "A";
$n = ord($c);
echo "<br /> Valoarea ASCII a caracterului $c este $n";
?>
Scriptul va afisa urmatorul rezultat:
Valoarea ASCII a caracterului A este 65
Iata un exemplu care afiseaza echivalentele în octal, respectiv hexazecimal al caracterelor ASCII ale caror coduri sunt cuprinse între 33 si 40:
<?php
for ($i=33; $i<40; $i++) {
        $c=chr($i);
        $octal = decoct($i);
        $hex = dechex($i);
        echo "<br /> $i (octal $octal, hex $hex): caracter - $c";
}
?>
Scriptul va afisa urmatorul rezultat:
33 (octal 41, hex 21): caracter - !
34 (octal 42, hex 22): caracter - "
35 (octal 43, hex 23): caracter - #
36 (octal 44, hex 24): caracter - $
37 (octal 45, hex 25): caracter - %
38 (octal 46, hex 26): caracter - &
39 (octal 47, hex 27): caracter - '

4. Crearea datelor de iesire formatate

PHP include doua functii utile pentru generarea datelor de iesire formatate, în speta printf() si sprintf().
Functia printf() afiseaza datele sale de iesire, în timp ce functia sprintf() returneaza datele sale de iesire sub forma unei valori sir.
În general, fiecare functie preia doua sau mai multe argumente. Primul argument este un sir, denumit sir de formatate, care specifica formatul datelor de iesire, iar celelalte argumente specifica valorile care vor constitui datele de iesire.
Iata un exemplu simplu de utilizare a functiei sprintf():

<?php
$num = 8.7;
echo $num;
$num = sprintf("%05.2f", $num);
echo '<br>'. $num;
?>
- Rezultatul afisat va fi:
8.7
08.70
- Cu ajutorul expresiei "%05.2f", sprintf() formateaza numarul din $num astfel incat acesta sa fie format din 5 caractere dintre care unul punct (.) si 2 zecimale.

Iata si doua exemple de utilizare a functiei printf():
<?php
$n = 8;
printf("Valoarea lui n este: %d", $n);
?>
- Va afisa "Valoarea lui n este: 8".
Al doilea exemplu, putin mai complicat, prezinta modul de utilizare a functiei printf() cu mai multe argumente pentru datele de iesire:
<?php
$sir = 'Aceasta este lectia %d din cursul %s';
$num = 13;
$tip = 'PHP';
printf($sir, $num, $tip);
?>
- Includerea datelor formatate in sir se face in ordinea adaugarii variabilelor intre parantezele functiei "sprintf()".
- Va afisa "Aceasta este lectia 13 din cursul PHP".

Sirul de formatare consta dintr-o serie de caractere si directive ordinare. Un caracter ordinar este orice caracter, în afara caracterului "%". Caracterele ordinare sunt pur si simplu copiate la iesire.
Directivele reprezinta secvente de caractere care încep cu simbolul "%"; aceste determina modul în care va fi formatat argumentul corespunzator.
O directiva simpla, cum este cea din exemplul precedent, poate consta dintr-un caracter "%" urmat de un specificator de tip, precum "d", care arata ca argumentul trebuie tratat ca numar zecimal. Cu toate acestea, o directiva mai sofisticata poate include urmatoarele componente, care trebuie sa apara în ordinea indicata:
Tabelul urmator prezinta specificatorii de tip disponibili.
Specificatorii de tip PHP folositi la formatarea sirurilor
Specificator de tip Descriere
b - Trateaza argumentul ca pe un întreg si îl afiseaza ca valoare binara
c - Trateaza argumentul ca pe un întreg si afiseaza caracterul cu aceeasi valoare ASCII ca si argumentul
d - Trateaza argumentul ca pe un întreg si îl afiseaza ca valoare zecimala
f - Trateaza argumentul ca pe o valoare de tip double si îl afiseaza ca valoare cu virgula mobila
o - Trateaza argumentul ca pe un întreg si îl afiseaza ca pe o valoare scrisa în octal
s - Trateaza argumentul ca pe un sir si îl afiseaza
x - Trateaza argumentul ca pe un întreg si îl afiseaza ca numar hexazecimal, cu litere scrise cu minuscule
X - Trateaza argumentul ca pe un întreg si îl afiseaza ca numar hexazecimal, cu litere scrise cu majuscule
Daca doriti sa inserati simbolul procentului în datele de iesire ale unui apel la functia printf() sau sprintf(), inserati doua caractere "%".
Tabelul urmator prezinta rezultatele aplicarii a diferite siruri de formatare valorilor selectate. Studiati tabelul si verificati daca ati înteles corect modul de operare a specificatorilor din cadrul fiecarui sir de formatare. Remarcati ca, în cazul omiterii cifrelor zecimale, se produce automat o rotunjire.
Spatiile au fost înlocuite prin accente circumflexe(^), pentru a facilita determinarea numarului de spatii si a amplasarii acestora.
Exemple de rezultate ale utilizarii a diferite siruri de formatare
Valoare Format Rezultat
100 %d 100
100 %b 1100100
100 %o 144
100 %x 64
100 %f 100.000000
12.345 %^-10f 12.345000^^^^^^^^
12.345 %^10f ^^^^^^^^12 .345000
12.345 %^-10.2f 12.35^^^^^^^^
12.345 %10.2f ^^^^^^^^12.35
test %^-10s test^^^^^^
test %^10s *^^^^^^test
Daca utilizarea functiilor printf() si sprintf() pentru formatarea numerelor pare cam greoaie, puteti folosi functia number_format(), care returneaza o valoare de tip sir continând un rezultat formatat. Puteti apela functia cu unul, doua sau patru argumente: - Argumentul "numar" specifica valoarea numerica pe care doriti sa o formatati.
- Argumentul "zecimale" specifica numarul dorit de cifre zecimale.
- Argumentul "punct_zecimal" precizeaza caracterul ce se va folosi drept punct zecimal.
- Argumentul "separator_mii' precizeaza caracterul care se va folosi ca separator al miilor.
În mod prestabilit, rezultatul este formatat fara zecimale, este inserat un punct (.) înaintea cifrelor care compun partea zecimala, respectiv se foloseste o virgula (,) pentru separarea miilor.
De exemplu, apelul la functia number_format(1.234, 2) returneaza valoarea 1.23

Functia PHP sscanf(), este complementara functiei printf(). Daca functia printf() genereaza date de iesire formatate, functia sscanf() citeste un sir, îl interpreteaza prin referirea la un sir de formatare si stabileste valorile variabilelor specificate în functie de continutul sirului.
Sa luam în considerare urmatorul exemplu:
<?php
$subiect = "08,25,2008";
$n = sscanf($subiect, "%d,%d,%d", &$luna, &$zi, &$an);
echo "Au fost gasite $n valori";
echo "<br /> luna = $luna";
echo "<br /> zi = $zi";
echo "<br /> an = $an";
?>
Datele de iesire ale acestui script sunt:
Au fost gasite 3 valori
luna = 8
zi = 25
an = 2008

- O lista cu mai multe functii utile in lucrul cu siruri gasiti la pagina -> Functii pentru siruri
Data si Timpul <<-- Anterior --- Urmator -->> Lucrul cu siruri 2

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care meta tag se foloseste pentru scurta descriere a paginii?
<meta content="..."> <meta description="..."> <meta http-equiv="...">
<meta name="description" content="70-160 caractere ce descriu continutul paginii" />
Ce proprietate CSS opreste efectul dat de "float"?
clear text-align position
#some_id {
  clear: both;
}
Clic pe metoda ce creaza un array cu toate elementele din pagina cu un anumit nume de tag.
getElementsByName() getElementById() getElementsByTagName()
var divs = document.getElementsByTagName("div");
var nr_divs = divs.length;
alert(nr_divs);
Indicati functia PHP ce returneaza numarul de elemente dintr-un array.
is_array() count() strlen()
$arr = array(7, 8, "abc", 10);
$nri = count($arr);
echo $nri;        // 4
Indicati adverbul corespunzator adjectivului din paranteza in propozitia: "I live (happy)".
happly happily hapily
I live happily.
- Traiesc fericit (in mod fericit).
Indicati adverbul corespunzator adjectivului din paranteza in propozitia: "Vivo (feliz)".
felizamente felizmente felices
Vivo felizmente.
- Traiesc fericit (cu fericire).
Lucru cu siruri 1 - Tutoriale PHP