Pagina 1 din 3

PHP (scripturi, aplicatii, tutorial)

Scris: 24 Sep 2010, 12:04
de Campus
La sugestia lui Manu vom discuta aici putin despre PHP. Am observat ca din ce in ce mai multi nevazatori incep sa invete acest limbaj de programare asa ca e bine sa existe pe aici bucatele de cod care pot fi utile pentru cate o eventuala problema.
Desi programez in PHP de ceva timp pana acuma am folosit doar stilul procedural si abia recent m-am orientat spre programarea pe obiect. Si ca sa incep fulminant o sa postez prima clasa pe care am scris-o pentru a transforma gradele Celsius in Fahrenheit si invers.

Cod: Selectaţi tot

<?php
class tempConvert{
    // Proprietatile clasei se definesc la inceput si e bine sa fim discreti cu ele:
    private $_fahr;
    private $_celsius;
    private $_tempIn;

    // urmeaza metodele 
    // mai intai metoda de construire a argumentelor clasei
    public function __construct($tempIn){
        $this->_tempIn=$tempIn;
    }
    // metoda de transformare in grade Celsius 
    public function toCelsius(){
        $this->_celsius = ($this->_tempIn - 32)*5/9;
        return round($this->_celsius);
    }
     // metoda de transformare in grade Fahrenheit 
    public function toFahr(){
        $this->_fahr=$this->_tempIn*9/5+32;
        return round($this->_fahr);
    }
}
?>
iata cum se foloseste

Cod: Selectaţi tot

<?php
// Valoaera initiala de convertit
$gradInitial=100;
// initializam obiectul
$convertit= new tempConvert($gradInitial);
// Pentru a vedea transformarile
// in Celsius
echo $convertit->toCelsius(); // Va afisa 38
// un separator de rand nou
echo '<br>';
// in Fahrenheit
echo $convertit->toFahr(); // va afisa 212
?>
Asadar 100 de grade Fahrenheit sunt 38 de grade Celsius pe cand 100 de grade Celsius sunt 212 grade Fahrenheit
Formula de calcul este Celsius = (Fahrenheit minus 32) inmultit cu 5 supra 9 si bineinteles inversul acesteia pentru transformarea inversa.
Am avut nevoie de aceasta clasa pentru a imbunatati scriptul de la buletinul meteo de pe site care arata acum si prognoza pe 7 zile si alte informatii utile.
Pentru exemplificare: http://pontes.ro/ro/utile/vremeainroman ... luj-Napoca

Scris: 24 Sep 2010, 13:24
de Manu
Super, ma bucur pentru topicul asta.
Nu stiam formula de transformare a gradelor Fahrenheit in Celsius si invers.
Interesanta metoda PHP pentru obiecte, ma tot enerva acea sageata compusa din dash si semnul de mai mare.

Poate explici tu putin mai mult despre modul de crearea a unei clase PHP.
Voi pune si eu in curand o clasa pentru calcularea sarbatorii de Paste dupa Calendar Iulian, in PHP exista o functie pentru cel dupa Gregorian: easter_date($year).
Eu la www.calendar.pontes.ro am folosit pentru data de paste stilul procedural, dar voi face un obiect sa il putem posta pe forum ca... asa cum eu am cautat pe google clasa pentru Pastele Ortodox, poate mai cauta si altii.

PHP de baza, introducere

Scris: 24 Sep 2010, 23:40
de Manu
Cum PHP este un scripting de care lumea se pare ca este interesata mult mai mult decat de alte limbaje de programare pentru ca e vorba de afisare pe Internet, m-am gandit sa incepem sa dezvoltam un mic tutorial pe intelesul tuturora, astfel incat sa poata fi acest topic un punct de start pentru unii.
Campus a demarat topicul cu artileria grea, direct cu clasele, e bine astfel ca lumea poate vedea de la inceput pana unde se poate ajunge. :)
Pana acolo insa, sa mai presaram si cateva elemente de baza.

Pentru inceput sa mentionam ca PHP este un limbaj interpretat, procesat pe server, astfel incat in browserele vizitatorilor unui site ajunge doar rezultatul, adica pagina HTML generata.
Pagina HTML poate fi realizata simplu, asa cum majoritatea stiu, avand toate tagurile de baza cap, corp etc scrise clasic, iar in continut, pentru o lista de exemplu sa fie un cod PHP care sa creeze o lista, fara ca aceasta sa fie scrisa manual, item cu item.
Pe scurt, se poate crea cu PHP, in doar 5 randuri de cod, fie o lista cu 100 itemi, fie cu 3000 de itemi, diferind doar numarul care spune cate <LI>-uri sa fie in total.

Pentru a delimita o secventa de cod PHP intr-un document HTML, se foloseste urmatoarea sintaxa:

Cod: Selectaţi tot

<php
// Aici randurile de cod, fie ele oricate.
?>
Nota pentru screen readere: Inainte de PHP a fost folosit semnul de mai mix si semnul intrebarii, iar secventa de cod a fost incheiata cu semnul intrebarii si semnul de mai mare.

Sunt mai multe elemente care au un rol intr-un limbaj de programare, noi incepem cu functiile:
Acestea sunt instructiuni pentru o anume, sa-i zicem actiune. De exemplu ca sa afisam un text pe ecran, folosim o functie de afisare, pentru a afla data de azi, folosim o alta functie etc.
Exista functii gata create si functii definite de utilizator. Pentru inceput ne referim la cele asa-numite Built-In, adica facute de cei care creeaza limbajul PHP.
Sa completam asadar codul de mai sus cu o prima functie, cea de afisare a unui text pe ecran.
Functia echo urmata de un text intre ghilimele sau intre semne apostrof afiseaza un text.
De mentionat ca orice rand de instructiune in PHP este terminat de semnul ";" (punct si virgula).

Asadar, sa cream un heading de nivel 1 in PHP. Practic codul de mai jos este inutil intr-o simpla pagina HTML, dar se poate incerca si se va vedea ca nu difera rezultatul cu nimic fada de scrierea simpla HTML.
Privind doar sursa paginii deschise in browser, codul PHP nu va fi observat, nimeni nu va stii ca a fost creat printr-o secventa PHP.

Cod: Selectaţi tot

<?php
echo "<H1>Bine ai venit pe site-ul meu</H1>";
?>
Tot ceea ce este intre ghilimele va fi afisat pe ecran in locul unde a fost scrisa ssecventa in pagina HTML.
Pentru ca se folosesc ghilimelele ca delimitare, trebuie sa mentionam ce se intampla cand vrem sa punem chiar in textul afisat ghilimelele; de exemplu vrem sa folosim la figurat un cuvant in heading-ul de mai sus.
Ca PHP sa nu confunde ghilimelele care se doresc afisate cu cele care incadreaza tot textul de afisat din functia echo, acestea trebuie sallvate prin precedarea lor cu semnul "\" (backslash).

Cod: Selectaţi tot

<?php
echo "<H1>Omul este un \"animal\"</H1>";
?>
Textul afisat fa fi un heading de nivel 1:
Omul este un "animal"

Daca se folosesc de multe ori ghilimelele in continutul afisat, se poate trece la folosirea functiei echo cu apostrofuri, in acest caz anulandu-se posibilitatea de confuzie, iar ghilimelele de afisat se pot scrie neprecedate de "\" (backslash):

Cod: Selectaţi tot

<?php
echo '<H1>Omul este un "animal"</H1>';
?>
Rezultatul este acelasi, alte diferente intre folosirea ghilimelelor sau apostrofurilor in cazul functiei echo se vor vedea eventual in viitor.

Deocamdata ne oprim aici.
Ar urma explicarea altor functii, apoi a variabilelor, a secventelor conditionale if, swithc, while, for, apoi s-ar putea merge mai departe cu explicarea array-urilor, iar in final, clasele si obiectele, din care o mostra este chiar la inceputul acestui topic.

Pana ne mai vine sa scriem, mai punem tot felul de coduri, astfel, cine vrea sa prinda din mers... practic nu are nevoie doar de manuale, ci de asimilare prin intelegerea altor coduri facute de unii altii.
Poate ne explica de pe acum Campus cum stau lucrurile cu construirea unei clase in cateva cuvinte.

Despre PHP

Scris: 25 Sep 2010, 00:23
de AdiTamasan
:D Sunt foarte incantat de faptul ca totusi pana la urma s-a deschis
un asemenea topic... Eu unul sunt interesat de PHP si mai stiu vreo cativa nevazatori, asa ca sa dea Dumnezeu sa aiba viata lunga.... Pentru inceput, am o observatie, si o intrebare...
Observatia: Din cate am citit eu prin modestele manuale de PHP poate ar fi bine de spus ca atunci cand scriem o linie de cod in PHP ar fi bine sa fim foarte atenti la modul cum scriem, caci ghilimelele si apostroafele ne pot da batai de cap... Cand se incepe secventa cu ghilimele ea trebuie incheiata cu ghilimele, iar daca incepem cu apostrof vom termina cu apostrof... Altfel browser-ul face indigestie, si ne va da o eroare caci spre deosebire de PHP aici browserul nu mai poate corecta din mers codul eronat, din moment ce avem de a face cu returnari de la un script...
Intrebarea: Si pe Manu si pe Nelu l-am auzit pomenind de stilul procedural... La ce se refera asta? Merci.

Scris: 25 Sep 2010, 03:15
de Campus
O sa incerc eu un scurt raspuns si sunt sigur ca Manu va veni cu alte precizari bine documentate in stilul in care ne-a obisnuit deja.
Stilul procedural in php consta dintr-o inlantuire de "comenzi" una dupa cealalta. De exemplu:

Cod: Selectaţi tot

<?php
$a=4;
$b=3;
$c=$a+$b;
echo $c;
// etc etc
?>
Multe din aceste comenzi .. mai toate ... sunt de fapt functii inglobate in limbajul de programare php.
Spre deosebire, stilul bazat pe obiecte implica definirea de functii si utilizarea acestora. De asemenea functiile pot fi inglobate in clase de obiecte ca in exemplul de la inceputul topicului iar acestea pot fi inlantuite intre ele...
Exemplul de mai sus in stilul bazat pe obiect ar suna asa:

Cod: Selectaţi tot

<?
function aduna($a,$b){
$c = $a + $b;
return $c;
}
// apoi oriunde in pagina respectiva poti chema functia ca sa faca adunarea
echo aduna(4, 7);
// iar daca mai ai nevoie de o alta adunare nu mai trebuie sa redefinesti variabile si sa scrii alte secvente de cod
echo aduna(46509, 23);
?>
Pentru incepatori e mult mai usor stilul procedural. Eu abia de curand am trecut gradat la programarea pe obiect desi chiar si acum multe dintre scripturile mele sunt un talmes-balmes intre cele 2 stiluri.
Performanta obtinuta e aceeasi in ambele stiluri insa scripturile foarte mari scrise procedural sunt foarte greu de "reparat". Te poti trezi ca nu fac ceea ce ai vrut tu sa faca si iti bati capu cateva ore bune pana gasesti unde e buba. Or daca secventele de cod sunt catalogate in functii reusesti mai repede sa gasesti eventualele probleme.
In plus, odata ce faci din ce in ce mai multe scripturi poti lua cate o functie din alte scripturi si sa o folosesti in alt context, dupa nevoie.
Eu chiar am cateva functii pe care le folosesc frecvent.
Pana te obisnuiesti cu limbajul e ok stilul procedural... mie chiar imi place mai mult... insa la scripturi complexe gen biblioteca pontes sau jinzora e aproape imposibil de folosit.
Cel mai complex script facut de mine in stil procedural e harta transportului in comun desi cred ca si acolo am scapat pe undeva cateva functii. Pe vremea aia nu prea intelegeam cu ce se mananca functiile si obiectele.
Referitor la punctuatie, si mie mi sa parut infernala la inceput dar incet incet m-am obisnuit.
Cel mai greu mi-a fost cu punct si virgula dupa fiecare enunt.... se mai intampla si acum sa uit cate una din cand in cand :D
Cat despre manuale.... cel mai mult am invatat din manualul de pe site-ul oficial php si din exemple practice. E adevarat ca mi-au placut mult cartile din seria "... For Dummies" ... parca erau scrise pt mine :D

Scris: 25 Sep 2010, 03:34
de Manu
Apoi ce sa zic eu legat de punct si virgula cand am invatat sa ma joc de-a programatul in JAWS Scripting unde nu se pune nimic la sfarsit de rand. :)

In legatura cu programarea orientata pe obiecte, cica s-a dezvoltat ca nu mai era chip sa se creeze ceva serios la o firma mare unde un program complet e alcatuit din munca multora.
Vine coordonatorul si spune: "Fa-mi o clasa pentru reverse sound". Se face clasa, pe coordonator nici nu il intereseaza exact cum e creata, o foloseste simplu prin doua trei linii de cod pentru care se face chemare din meniu. Astfel poate rezulta un program in care fiecare optiune sa fie facuta de alt programator.

Oricum, cand facem cate un lucru fiecare individual, cate o mica aplicatie... zic si eu ca stilul procedural, programare structurata vine mai frumos in intampinarea satisfacerii nevoii de manifestare a logicii. :)

Eu totusi insist Campus, daca ai chef sa imi explici cum stau lucrurile cu acea clasa... Sunt mai nou in PHP si chiar nu m-am prins ce e cu acel $_tempIn. Eu am invatat un stil putin diferit in JAWS Scripting si C++.

Scris: 27 Sep 2010, 11:55
de Campus
Ok, o sa incerc sa explic elementele de baza ale unei clase
O clasa e in esenta un colaj de functii... luam codul din exemplul de mai sus:

Cod: Selectaţi tot

<?php 
/* mai intai se face definirea clasei... aici spunem ca obiectul este o clasa si numele acesteia. In acelasi fel se definesc si functiile. Dupa nume incepe acolada deschisa care contine codul clasei si care va fi inchisa bineinteles la sfarsit*/
class tempConvert{ 
/* Datorita faptului ca o clasa poate avea mai multe functii si pentru a usura legaturile intre acestea la inceput se definesc proprietatile clasei. Acestea sunt un fel de meta variabile care pot fi accesate din oricare dintre functii precum si prin referire la obiectul respectiv. Spre deosebire de acestea o variabila ovbisnuita utilizata intr-o functie nu poate fi accesata in alta functie. Proprietatile unei clase pot fi publice (accesate si din afara prin referire la obiect, protected, accesate doar in interiorul ierarhiei clasei sau private accesate doar in clasa respectiva*/
    // Proprietatile clasei se definesc la inceput si e bine sa fim discreti cu ele: 
    private $_fahr; 
    private $_celsius; 
    private $_tempIn; 

    /* urmeaza metodele care sunt de fapt functii
     deoarece spre deosebire de functii la clase nu putem specifica argumentele la sfarsit vom folosi o functie speciala pentru a le construi
     functia de mai jos preia pentru clasa variabila $tempin si apoi incarca proprietatea $this->_tempIn cu valoarea acesteia. 
     De acum inainte orice functie din clasa are acces la aceasta valoare
     
     */
    public function __construct($tempIn){ 
        $this->_tempIn=$tempIn; 
    }
    // Apoi urmeaza celelalte functii ...
    }
?> 
Pentru a face apel la oricare dintre functiile sau proprietatile clasei in interiorul acesteia se utilizeaza variabila $this-> acesta fiind un nume predefinit care se refera la obiectul respectiv... ceva de genu "Al meu".
Cam atata despre obiect... nici eu nu le stiu inca prea bine... ideal e sa stapanesti bine functiile inainte... apoi e mai usor.

Ce este o clasa

Scris: 27 Sep 2010, 13:20
de Mircea_Vutcovici
O clasa, in limbajele de programare obiectuale, reprezinta o clasa de obiecte de acelasi tip. Este un nou tip de date. De exemplu limbajele definesc intern tipul numar intreg, numar real sau sir de caractere. Noi tipuri de date (precum numar complex sau fractie) pot fi definite prin creerea unei clase de obiecte. O clase este o abstractizare a unei multimi de obiecte reale. In program o clasa encapsuleaza niste atribute care, in general, sunt accesibile prin metode (functiile din programarea procedurala/functionala).

Un obiect se spune ca este o instanta a clasei din care face parte. Adica este un element al multimii care defineste tipul de obiect. De exemplu 4/5 este o instanta a clasei fractional.

Avantajul claselor apare cand programele devin foarte complexe, pentru ca permit separarea diverselor functionalitati ale programului. In felul acesta nu mai lucram cu pixeli si cu pozitionarea lor absoluta pe ecran, ci lucram cu ferestre, cu butoane si cu fonturi.

Un alt exemplu sunt documentele Word. Acestea sunt compuse dintr-o insiruire de obiecte de tip paragraf, de tip imagine, de tip tabel, etc. De exemplu obiectul paragraf contine o lista de caractere, plus atribute precum margini, dimensiune aliniat, aliniere cu paragraful precedent sau urmator. Lista de caractere este si ea la randul ei un obiect de tip lista de obiecte generice in care elementele sunt in cazul respectiv caractere.

Pe langa clase de obiecte avem si interfete, care sunt folosite pentru a avea ca intrare pentru o metoda (functie) diverse clase de obiecte. De exemplu pentru o metoda de sortare putem avea ca intrare numai clase de obiecte care poti fi comparabile, adica clase de obiecte care definesc(implements) o metoda de comparare.

Clasele pot fi extinse astfel obtinand noi clase de metode care adauga functionalitati clasei initiale. Operatia se numeste mostenire.

Scris: 27 Sep 2010, 14:21
de Campus
Mersi mult, Mircea... m-ai scos din ceata putin :D Poate ne mai corectezi si tu pe aci pe viitor daca vezi ca facem prea multe greseli sau daca ne ratacim prea mult in ceata php-ului :) Deocamdata, pana la obiecte o sa ne ocupam de chestiile de baza pentru ca sunt multi nevazatori care abia incep cu php-ul. Oricum asta cu obiectele e foarte faina... e mai greu de priceput pt amatori ca mine dar e foarte utila pt ca poti lua oricand o clasa si in cateva minute o implementezi in alta parte. In plus, internetul e deja plin de clase facute de altii asa ca avem sanse ca cineva sa fi facut deja programelu la care ne-am ganditl inaintea noastra si putem sa ne inspiram sau chiar sa luam codul gata facut. http://www.phpclasses.org/ e un bun exemplu in acest sens. Eu reusisem sa implementez astfel de obiecte chiar pe vremea cand habar nu aveam cu ce se mananca .... desi nici acuma nu stiu mult mai multe :D

Scris: 27 Sep 2010, 17:20
de Manu
Da, e clar, noi cam foloseam clasa si obiect cumva ca sinonime, dar obiectul este o instantiere a unei clase deci.
O sa continuu si eu in curand cu tutorialul la nivel basic.

Scris: 27 Sep 2010, 20:47
de Manu
Daca tot a venit pe aici un administrator Unix, care candva imi era chiar profesor la scoala, as fi curios de cateva detalii in legatura cu problema datei Unix.
Am facut weekend-ul trecut o mica sectiune pe site, www.calendar.pontes.ro unde sunt cateva informatii legate despre o anume data sau despre un anume an.
Totul a mers ok, pana am inceput sa testez pe ani mai mari de 2038 sau mai mici de 1902, am vazut ca tot da eroare la calcule. Foloseam ca al doilea parametru in functia date() transformarea in timp Unix prin strtotime(), asta venea foarte usor pentru ca sa aduni si sa scazi un timp linear si apoi sa fie automata transformarea in ani, luni, zile etc... a devenit o joaca de copii.
Am citit apoi de problema sistemului pe 32 de biti in care un integer merge pana la 2187483647, plus sau minus, deci doar atatea secunde de la 1970, 1 ianuarie, ajungem pana in 19 ianuarie 2038.

Care sunt rezolvarile? Se trece acum peste tot pe 64 la sistemele Linux de pe servere? Daca serverul pe care suntem acum ar avea Linux pe 64, as putea lasa sa se aleaga din Combo un numar mai mare de ani?

Scris: 29 Sep 2010, 00:25
de DanielAvram
Salut, problema pe care ai intalnit-o referitor la anul 2038 e o problema cat se poate de serioasa aparuta la sistemele Unix si anume ca daca nu se schimba ceva pana atunci toate sistemele Unix vor fi date peste cap in 19 Ianuarie 2038 ora 3:14:07 iti voi pune aici o scurta explicatie gasita pe net rapid, dar sper ca maine voi reveni cu ceva mai relevant.
Sistemele de operare 32-bit actuale Unix si Linux o vor lua razna pe data de 19 Ianuarie 2038 ora 3:14:07. In loc sa afiseze corect anul 2038 vor afisa anul 1901. Asta deoarece sistemele 32-bit Unix si Linux tin data si ora intr-o variabila integer de 4 byte ce corespunde numarului de secunde scurse dupa 1 Ianuarie 1970 ora 12:00:00. Valoarea maxima a unui intreg de 4 byte este 2.146.483.547 ce corespunde datei de 19 Ianuarie 2038 ora 3:14:07.
Acuma eu zic asa: daca problema se manifesta doar la platforme pe 32 biti nu ar fi o problema mare pentru ca eu unu cred ca pana in 2038 lumea va si uita aceasta platforma, nu am inteles daca se manifesta la fel si pe 64 biti.

P.S.: Uite ca am gasit, e intradevar cum imi aminteam eu dintr-un articol, citeste aici, e vorba de bug-ul mileniului:
Unix Millenium Bug

Scris: 06 Oct 2010, 23:58
de Manu
Sa continuam putin cu tutorialul nostru inceput si lasat balta pentru cateva zile bune deja.

Pentru inceput sa facem o diferentiere intre text si numar, intre string si integer cu alte cuvinte.
Ne referim pentru inceput doar la integere (numere intregi) si stringuri (texte), pentru a fi mai usor.
In general, cea ce este string se pune intre ghilimele sau apostrofuri, ceea ce este integer, nu necesita ghilimelele sau apostrofurile, decat in caz de afisare ca string.
Am vazut functia echo, aceasta se ocupa de afisarea a ceva sub forma unui string.

Sa vedem o alta functie care are de-a face tot cu string, si anume functia date().
Aceasta functie necesita cel putin un parametru intre cele doua paranteze, este vorba de ce anume dorim sa se scoata in legatura cu data sau ora. Pentru ca este vorba de string, se folosesc si ghilimelele.
Asadar, se va folosi: "d" pentru zi, "m" pentru luna, "Y" pentru an sub forma de 4 cifre, "y" pentru an sub forma de doua cifre, "H" pentru ora in format de 24 de ore, "i" pentru minute etc.
Acesti parametri pot fi pusi intre ghilimele intre parantezele functiei date() formatati in orice fel, cum ar fi de exemplu: "d.m.Y H:i", va afisa: 6.10.2010 23:37. Deci, literele scot informatiile cerute dupa cum am enumerat, iar semnele de punctuatie apar printre ele dupa cum le punem.
Un cod complet pentru a afisa data si ora curenta ar fi:

Cod: Selectaţi tot

<?php
echo date("d.m.Y H:i");
?>
Acum, pentru a intelege mai bine diferenta dintre string si integer, dintre folosirea ghilimelelor sau nu, vom lua functia echo cu care vom afisa aceeasi secventa cu si fara ghilimele.
O mica paranteza, semnul "/" (slash) este folosit pentru impartirea a doua numere, in cazul nostru integere, semnul "*" (asterisc) pentru inmultire, "+" (plus) pentru adunare si "-" (minus) pentru scadere. Acestia sunt operatori, dar vom vorbi despre ei si altii mai amanuntit in viitor.

Asadar, daca in functia echo punem prima data cu ghilimele 5/5, adica cinci impartit la cinci, va va aparea ca rezultat afisat 5/5.
Daca punem fara ghilimele 5/5, va aparea afisat 1.
De ce? pentru ca prima data 5/5 este considerat string, in al doilea caz nefiind ghilimele, se considera operatie matematica, cei doi 5 nu sunt considerati string, ci numere si se trece la operarea cu ele, deci impartire, iar cum echo se ocupa de afisarea a ceva, pana la urma va afisa doar 1, rezultatul impartirii.

Cod: Selectaţi tot

<?php
echo "5/5";
echo "<BR>";
echo 5/5;
?>
Codul de mai sus va afisa doua randuri:
5/5
1


Suna cam ciudat lucrurile de mai sus, nu este chiar atat de importanta la PHP delimitarea dintre string si integer, asta se va intelege dupa invatarea variabilelor, data viitoare.

Scris: 16 Oct 2010, 01:38
de Campus
Revin aici cu o mica functie utila pentru toti cei care doresc sa elimine diacriticele noi din text pentru a le afisa pe un site in php. Functia o folosim actualmente la pagina de stiri accesibilizate a site-ului Pontes.

Cod: Selectaţi tot

function jawsFriendly($str){
	$diacritice=array
		('& #536;' =>'& #350;', 		//(S cu virgulă) latin capital letter s with comma below
		'Ș'=>'Ş',  							//  =  (S cu sedilă) latin capital letter s with cedilla
		'& #537;' =>'& #351;', 		//(s cu virgulă) latin small letter s with comma below
		'ș'=>'ş', 							// =  (s cu sedilă) latin small letter s with cedilla
		'& #538;' =>'& #354;' ,		// (T cu virgulă) latin capital letter t with comma below
		'Ț'=>'Ţ', 							//  =  (T cu sedilă) latin capital letter t with cedilla
		'& #539;'=>'& #355;',		//ț (t cu virgulă) latin small letter t with comma below
		'ț'=>'ţ');								// =  (t cu sedilă) latin small letter t with cedilla
	return strtr($str, $diacritice);
	}
Functia este foarte simpla, practic defineste un array cu corespondenta intre diacriticele vechi si cele noi si apoi utilizeaza functia strtr() pentru a face inlocuirile in text.
Un mic exemplu:

Cod: Selectaţi tot

<?
	$text="Știu și Țiriac ține minte!";
	echo $text; // va afisa , evident: 'Știu și Țiriac ține minte!'
	echo jawsFriendly($text); // va afisa 'Ştiu şi Ţiriac ţine minte!'
?>
Trebuie sa amintim aici ca functia strtr() in combinatie cu un array poate fi utilizata chiar si pentru a traduce bucati de text. Noi mai folosim aceasta functie, de exemplu pentru a traduce automat buletinul meteo preluat de pe weatherunderground.com. De asemenea, dupa cum ati observat, functia de mai sus transforma automat si codurile html ale diacriticelor respective asa cum le-am gasit pe Wikipedia. Pentru a le afisa aici am despartit semnul & de semnul # cu un spatiu asa ca daca doriti sa utilizati codul functiei de mai sus va trebui sa eliminati spatiul dintre aceste semne.

Variabilele

Scris: 22 Oct 2010, 03:41
de Manu
Sa mai avansam putin cu mini-tutorialul nostru despre PHP.

Prezint pe scurt o prima parte din informatia despre variabile.

In orice limbaj de programare, variabilele sunt o latura importanta, fara de care nu se poate face nimic.

Variabila, o definitie metaforica, ar fi o cutiuta in care se pastreaza o informatie (string, integer etc.), informatie care se poate modifica in urma unor actiuni.

Aceste variabile sunt create de catre programatori pe parcursul realizarii unui script.
De exemplu, avem nevoie de o cutiuta in care sa se puna ora actuala.
Ii dam acestei cutiute un nume oarecare, sa zicem "ora_curenta". Ei bine, avem nevoie sa punem in cutiuta aceasta chiar ora de la momentul incarcarii paginii in cazul PHP-ului, pentru ca apoi sa o putem afisa pe ecran, adica prin functia echo sa aratam ce este in cutiuta.

In PHP, o variabila se defineste prin precedarea numelui dat cu semnul de dolar ("$"), de exemplu:

Cod: Selectaţi tot

<?php
$ora_curenta;
?>
Prin secventa de mai sus doar am creat o variabila cu numele "ora_curenta", deci o cutiuta goala, deoarece inca nu se vede pe undeva ca i s-ar fi atribuit vreo valoare.

Important!
In denumirea variabilelor nu pot fi folosite semne precum "-" (minus), "+" (plus) sau numere la inceput.

Pentru a atribui o valoare unei variabile, se pune semnul egal dupa denumirea acesteia, apoi se scrie valoarea cu care va fi egala variabila, se pune ceva in cutiuta.

De exemplu:

Cod: Selectaţi tot

<?php
$ora_curenta = "15:22";
echo "Acum este ora $ora_curenta";
?>
Secventa de mai sus atribuie variabilei "$ora_curenta" valoarea "15:22". Am pus intre ghilimele valoarea pentru ca e vorba de un string, nu ne referim la ora 15:22 ca la niste numere cu care lucram matematic.

Apoi am folosit functia echo pentru a afisa continutul variabilei, al cutiutei plus textul "Acum este ora".
Deci, in urma introducerii codului de mai sus intr-o pagina web, va aparea:
"Acum este ora 15:22".

Atribuirea unei valori fixe in cazul de mai sus nu isi are rostul, asa ca vom atribui chiar ora curenta.
Vorbeam intr-un post anterior de functia date(). Ei bine, dupa egalul de dupa definirea variabilei se poate folosi chiar functia pentru data si i se va atribui acesteia o valoare curenta.

Cod: Selectaţi tot

<?php
$ora_curenta = date("H:i");
echo "La generarea acestei pagini, ora serverului a fost $ora_curenta.";
?>
Codul de mai sus va arata timpul exact al serverului la generarea paginii, in format de 24 de ore. Deci, la F5 ora se va tot actualiza in Internet Explorer.

Pana in prezent am atribuit unei variabile valori fixe de tip string si o valoare dinamica printr-o functie, mai precis date().
Data viitoare voi continua cu variabilele, mai multe amanunte legate de modalitati de atribuire de valori prin operatii matematice, concatenare de stringuri etc.

Sper sa fiu corectat de cei care cunosc mai bine ca mine PHP-ul, eu vorbesc foarte mult pe baza celorlalte limbaje pe care le-am exersat. In PHP nu prea am facut nimic si nu sunt familiarizat cu toate amanuntele, deci ar trebuis a fiu completat sau corectat, astfel mai facem si o comparatie intre limbaje.