Taguri PHP, instructiuni, punct si virgula
Afisarea textului in PHP 11
In multe din scripturile scrise de incepatori (si nu numai) continutul rezultat in urma executiei este un text (de obicei in format HTML). Pentru a obtine acest text, secventele de cod trebuie sa contina instructiuni explicite care sa "spuna" intrepretorului ce anume trebuie afisat.
Instructiunile de afisare sunt print, echo si printf. Primele doua sunt echivalente si fac acelasi lucru (exista unele diferente de forma, vezi exemplul de mai jos, dar poate fi folosita oricare dintre ele); printf este folosita mai rar datorita sintaxei oarecum greoaie.
", "Afisez", " un text din ", 4, " bucati";
# o singura intstructiune print poate primi doar unul
print "
";
print "Afisez";
print " un text din ";
print 4;
print " bucati";
# printf este folosita pentru a formata continutul, la fel ca in C/C++
printf( "
Am %4.2f lei", 102.123456 ); // afiseaza Am 102.12 lei
?>
<?php
echo "Este 3 mai mic decat 2? <br />";
if( 3 < 2 ) {
print "3 < 2";
print "3 este mai mic decat 2";
}
?>
este un exemplu unde ar trebui sa se vada cum indiferent de instructiune daca lipsesc {} tot ce urmeaza dupa prima instructiune este executat indiferent de conditie.
Cred ca trebuiesc sterse {} ca sa se afiseze ce ai spus ca va afisa
P.S. E foarte util site`ul chiar sunt incepator si chiar se explica totul pe intelesul incepatorilor. Felicitari
eu am facut C++dar nu stiu la ce se foloseste instr <br/>..ma poti ajuta?
"/n"-este folosit pentru a afisa pe un rand diferit..sau pentru ce..ca nu mai tin minte
pt cristina, in C++ nu exista <br/>, iar "/n" e folosit pt linie noua
stiu,e o diferenta foarte mare de timp intre intrebarea cristinei si raspunsul meu,dar poate le va fi de ajutor altora
tagul <br> semnifica linie noua in html
dupa modificarile de rigoare in notepad, salvez, reload pagina si nu incarca pana nu dau restart apache.
Aveti vreo solutie?
Ionut, probabil ai activat Alternative PHP Cache (APC) si este configurat in asa fel incat script-urile PHP nu sunt verificate daca au fost modificate. Prin urmare, cache-ul de la nivelul apache-ului nu este actualizat decat la restart. O solutie ar fi sa activezi verificarea scripturilor (configurarea apc.stat activata) sau eventual sa dezactivezi APC complet. Detalii aici: http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat
Buna si multumesc pentru lectii - foarte utile.
O problema ar fi testarea pe Ideone - tagurile <br /> sunt considerate text, nu instructiuni html.
De exemplu pentru codul de la
Afisarea textului in PHP
apare ca rezultat
TextText<br />Afisez un text din 4 bucati<br />Afisez un text din 4 bucati<br />Am 102.12 lei
Salut,
Ma bucur ca iti este util site-ul.
Legat de IdeOne, mie mi se pare corect modul de afisare. Practic iti arata exact ceea ce returneaza scriptul PHP (text cu taguri), ceea ce poate fi util in anumite situatii, in special in perioada deprinderii cu programarea in PHP.
La urma urmei, PHP afiseaza un text. Faptul ca il vizualizezi cu un browser (si ca apare diferit de cum l-ai vedea cu Notepad) nu are legatura stricta cu procesarea server-side.
Un alt avantaj, zic eu, este ca te "forteaza" sa incerci exemplele pe calculatorul personal daca vrei sa vezi rezultatele altfel. Lucru bun, pentru ca te face sa scrii cod, nu doar sa citesti cod :)
Succes!
Alexandru
Pentru "printf" avem:
"%4.2f", ".2"-ul ala spune cate zecimale se iau. 4 la ce se refera?
"%4.2f"
Intr-adevar ".2" se refera la nr. de zecimale din rezultatul afisat, iar "4" inseamna lungimea minima a numarului afisat (numarul de caractere).
Altfel spus, "%4.2f" exprima un numar cu cel putin 4 cifre din care 2 zecimale.
O intrebare nu inteleg la printf "%4.2f" 4 e numarul total de caractere si 2 e numarul de zecimale? daca punem "%2.1f" mie imi afiseaza acelasi lucru...?
Adauga un comentariu la aceasta sectiune.
Ce afiseaza PHP? 6
Rezultatul unui script PHP este de cele mai multe ori un text simplu in format HTML. Cu alte cuvinte, in majoritatea cazurilor PHP returneaza o pagina HTML ce va fi afisata in browser. La inceput, acest lucru poate genera confuzii, intrucat sursa HTML este diferita de ceea ce se afiseaza efectiv in browser.
Spre exemplu, fie urmatoarea secventa de cod:
Probabil v-ati astepta ca rezultatul sa fie un text afisat pe 2 linii. Salvand aceasta secventa intr-un fisier PHP si accesandu-l prin intermediul unui web-server, veti observa ca rezultatul este urmatorul:
SalutAcesta este un script simplu
Desi este confuz, rezultatul este corect. Codul PHP afiseaza doar caracterele care i-au fost indicate. Sfarsitul de linie reprezinta un caracter separat, ne-printabil, dar care controleaza cum apare textul pe ecran. In cazul nostru, nu s-a transmis acest caracter (numit si new-line) si prin urmare PHP nu l-a afisat.
Sa rescriem exemplul de mai sus pentru a se afisa si caracterul "sfarsit de linie"
Verificand iar in browser veti constata ca nu s-a schimbat nimic. La prima vedere. In realitate rezultatul este afisat pe 2 linii, in textul trimis de PHP catre browser. Intrucat pagina este interpretata ca fiind HTML, browserul ignora caracterele new-line. Pentru verificare vizualizati sursa paginii (meniul View din browser -> view source).
Pentru a ajunge la rezultatul dorit (acela de a afisa un text pe 2 linii in pagina) trebuie folosita urmatoarea secventa:
"; # se afiseaza tagul BR ce va fi interpretat de browser ca 'linie noua'
# linia noua va fi afisata in pagina finala HTML dupa ce este interpretata de
# browser si nu are nici o legatura cu \n
print "Acesta este un script simplu";
?>
Sursa paginii arata in felul urmator:
Salut
Acesta este un script simplu
In browser tagul BR este interpretat ca sfarsit de linie (line break). Caracterul "new-line" afisat de noi (in print "\n") este ignorat oricum in HTML. Rezutatul, asa cum se vede in fereastra browser-ului:
Salut
Acesta este un script simplu
Nota: Este foarte important sa se inteleaga diferenta dintre ceea ce se returneaza in urma executiei unui script PHP si ceea ce se afiseaza propriu-zis in browser. Pe scurt, PHP printeaza cod HTML care este afisat diferit de browsere.
De asemenea, trebuie inteles faptul ca functia print nu afiseaza textul pe mai multe linii daca nu se specifica acest lucru in mod express. Spre exemplu fie urmatoare secventa de cod:
Rezultatul va fi
123
S-a afisat doar ce s-a indicat, 3 caractere, pe o singura linie, fara spatii.
Un alt lucru important de retinut este faptul ca odata printat, un text nu mai poate fi "sters". Nu exista "undo" pentru un print. Se poate captura intregul continut ce se transmite la finalul executiei, dar nu se poate altera textul afisat de o instructiune print anume.
Intelegand aceste aspecte va va fi mai usor in lucrul cu PHP si in modul in care verificati rezultatele scripturilor voastre.
am creat fisierele, le-am pus in folder dar nu merge, atunci cand dau click pe link imi spune "Oops! This link appears to be broken." .Eu dau click dreapta pe iconul de langa ceas, dau "local web" , dar cand se deschide in browser imi apare scris exact ceea ce este in document, fara nici o schimbare :/
Ai grija ca fisierul sa fie salvat cu extensia .php si nu .php.txt. Este important. Citeste comentariile de la celelalte sectiuni si o sa afli situatii similare cu a ta. Spor!
Salut , la mine cand scriu print "\n" imi afiseaza in browser exact asa "\n" dar nu trece scrisul pe alta linie , in schimb cu print "<br>" merge ...
Probabil ca la print scrii expresia \n intre ghilimele simple (apostrof): print '\n'; si nu intre ghilimele duble.
In cazul asta se va printa textul asa cum este, fara ca expresia \n sa fie transformata in linie noua. Mai multe detalii la http://php.punctsivirgula.ro/string/
In alta ordine de idei, elementul <br> este diferit de \n in sensul ca actioneaza asupra modului in care browserul tau afiseaza textul ("rupe" linia, de la <br> = brake). Pe de alta parte expresia new-line ("\n") este cea care introduce o linie noua in textul rezultat in urma executiei. Acel text nu trebuie neaparat sa fie afisat in browser (ar putea de exemplu sa fie scris intr-un fisier, sau pe o conexiune de date).
Important este sa faci diferenta intre <BR> si "\n" si sa stii cand trebuie folosit fiecare.
Spor!
cand scriu "\n" textul nu se duce jos adica nu face o linie noua ci doar lasa spatiu intre paragrafe de exeplu daca scriu asa print "ceva"
print "\n"
print "altceva"
o sa imi apara: ceva altceva,si nu unul sub altul cum ar trebui.
sall spune terog cum sa dau variabila de la tastatura in php ca mam uitat da parca nam observat nimic
Adauga un comentariu la aceasta sectiune.
Siruri de caractere 16
In majoritatea scripturilor PHP se lucreaza cu bucati de text denumite siruri de caractere sau string-uri. Sirurile de caractere reprezinta expresii (entitati ce au/returneaza o valoare) si pot fi folosite, la afisare, in atribuiri, la verificari, etc.
In limbajul PHP, sirurile de caractere pot fi delimitate de ghilimele duble, ghilimele simple sau printr-o notatie speciala folosind operatorul <<< (numit heredoc).
Nota: in acest exemplu nu este nici o diferenta intre modul de definire a sirurilor - toate cele 3 stringuri afisate sunt echivalente, indiferent ca au fost delimitate prin ghilimele, apostrof sau operatorul heredoc. Cu toate astea, PHP trateaza in mod diferit aceste moduri de delimitare. Mai multe explicatii si exemple sunt prezentate in pagina Operatii cu siruri.
Imi pare o eroare : Parse error: parse error in C:\Program Files\EasyPHP 3.0\www\ma_numesc.php on line 15
Da, erau 2 probleme cu secventa de cod de mai sus:
- lipsea punct si virgula (;) la al treilea print
- exista un spatiu dupa "print <<<TXT" ceea ce facea ca interpretorul PHP sa dea eroare.
Problemele au fost corectate acum.
Nota: Pentru a vedea rezultatul scripturilor si a observa diferentele e bine sa te uiti in sursa paginii HTML (View -> View Page Source)
acea eroare a aparut iar:
spatiu dupa "print <<<TXT"
mie nu-mi citeste codul acela pe mai multe randuri si nici cu codul \n nu trece...doar cu <br /> sau <br>
Cred ca delimitatorii astia ajuta oarecum la o buna organizare a lucrului programatorului. Sau cel putin asa vad eu pentru moment lucrurile. Nici eu nu intelesesem initial, pana la urma am folosit varianta de mai jos si a mers
<?php
print <<< delimitator
Exemplu de sir care foloseste delimitatorul heredoc.
delimitator;
?>
Si mie imi apare erroare la linia 15 dar am modificat in orice fel si tot asa iese am si dat copy paste de pe site si tot asa :|
Dragut site, cam rar resurse bune in romana pentru a invata php.Poate ar trebui sa intri mai in detali la tutoriale , sa spui ce e heredoc, ce e nowdoc , la care dintre ele merge interpolare (ce inseamna interpolare) etc.Oricum succes in continuare.
problema este ca dupa primul TXT este un spatiu. Eliminarea lui conduce la disparitia erorii.
# o instructiune echo poate primi mai multi parametrii
echo "Afisez", " un text din ", 4, " bucati";
# o singura intstructiune print poate primi doar unul
print "Afisez";
print " un text din ";
print 4;
print " bucati";
si totusi
// concatenarea (legarea) sirurilor
print 'Sir1' . " legat de " . 'Sir2'; // Sir1 legat de Sir2
Ce sa inteleg din astea?
Prin concatenarea sirurilor se obtine in final un singur sir, care este tratat ca atare, de sine statator.
Asta este important de stiut, pentru ca "print" asa cum ai spus si tu poate primi un singur parametru, iar prin concatenarea mai multor secvente se obtine exact una singura. La executarea instructiunii print interpretorul nu va "sti" ca textul ce trebuie afisat provine din 3 bucati diferite.
La prima vedere e un pic derutant, dar pe masura ce vei parcurge restul capitolelor (Variabile, Functii) va fi mai usor de inteles.
este enervant ca scrie totul pe o linie impreunat .. dar am rezolvat problema asta:
print <<<TXT
Text pe mai multe linii. <br>
Delimitatorii pot avea orice nume: TXT, START, etc, cu urmatoarele conditii<br>
- ambii delimitatori trebuie sa aiba acelasi nume<br>
- inainte de primul delimitator se foloseste <<<<br>
- delimitatorul de inceput nu trebuie sa fie urmat de spatiu sau alt caracter<br>
- delimitatorul de final sa fie la inceputul liniei (fara spatii inainte)<br>
- dupa delimitatorul final se pune punct si virgula ;<br>
TXT;
Multumesc. Foloseam incrementare cu tab-uri in notepad++ si nu mergea de nici un fel. Dupa informatiile lui Alexandru si ale tale a mers.
Multumesc amdouara.
Bun site, mai ales pentru incepatori.
O zi buna.
Am incercat tot ce ati sugerat aici,dar tot eroare imi apare.Initial am folosit notepad++,apoi notepad dar degeaba.Sunt sigur ca gresesc ceva dar nu stiu ce.Astept ajutor!
Incearca altceva: fa click pe butonul Testeaza din dreapta casetei de cod (care va deschide pagina http://ideone.com/HBiZn ) si copiaza codul de acolo. E acelasi lucru, dar macar poti verifica daca iti functioneaza.
Am incercat si varianta ta si tot nu functioneaza.Iata ce-mi afiseaza(ghilimelele sunt puse de mine):"Parse error: syntax error, unexpected '<<' (T_SL) in D:INSTALARIPHPEasyPHP-DevServer-14.1VC11datalocalwebsiruri_de_caractere.php on line 6"
Vezi ca ai 2 caractere "mai mic" (<<) in loc de 3 (<<<). De asemenea, nu trebuie spatiu intre ele sau dupa ele.
Am tot ce trebuie,cel putin asa cred eu,si pentru edificare,as vrea sa-ti trimit o arhiva cu 3 fisiere:unul cu afisarea rezultatului in browser(Mozilla),altul cu codul_sursa din browser si ultimul cu ceea ce am scris eu in Notepad++.
Intrebarea este,pe ce adresa de e-mail sa-ti trimit arhiva.
Adauga un comentariu la aceasta sectiune.
Comentarii in PHP 8
Comentariile sunt portiuni de cod care nu se executa. Sunt folosite de programatori de regula pentru a da diverse explicatii despre logica aplicatiei, variabile si altele. Comentariile nu afecteaza executia unui script si pot fi sterse din cod fara nici un efect.
Nota: comentariile /* */ nu pot fi imbricate (inserate unele in altele). Exemplul urmator nu este un cod valid.
Este un lucru foarte util sa folositi comentarii in cod pentru a explica modul de rezolvare a problemei abordate, sau pentru a da detalii despre operatiile efectuate. Acestea va vor ajuta mai tarziu daca veti vrea sa modificati codul scris, sau vor oferi altor persoane informatii (valoroase) despre cum ati gandit codul respectiv.
imi place
misto tutorialul pt. cineva care stie deja html, css... in rest e pierdere de timp, eu unu stiu ceva html .. dar m-a ajutat cu -1 pana acum.. banuiesc ca nici tu nu cunosti php .. un fel de copy/paSTE de ALTUNDEVa>>>PIERDERE DE TIMP(pt. un incepator)..ms. oricum
Multumesc pentru comentarii, pozitive si negative. Tin sa mentionez ca acest ghid are un public tinta bine definit si este posibil ca tu sa nu faci parte din el. Reciteste cu atentie pagina de prezentare a site-ului, accesibila la http://php.punctsivirgula.ro/?despre si verifica daca te identifici cu ce scrie la sectiunea "Cui i se adreseaza acest site?". Daca nu te incadrezi, poti cauta oricand alte resurse de PHP (cateva locatii sunt indicate si pe pagina http://php.punctsivirgula.ro/start/).
Daca ai nevoie de mai multe lamuriri, de orice fel, te invit sa imi trimiti un email la adresa specificata pe site.
Toate cele bune!
Alexandru,
punctsivirgula.ro
Am inteles mult din acest tutorial!
Multumesc din suflet pentru tot ce este aici :D Mare ajutor din partea voastra!
Felicitari Alexandru pentru site.E de mare ajutor! Spor la treaba in continuare!
Eu pana acum am inteles tot, testarile sunt super, nu am trecut pana acum la pasul urmator, pana nu l-am inteles pe cel anterior. Tot ce trebuie facut e cand testezi sa rescrii personal codul, nu sa faci copy/paste..
Tagurile <%
/* taguri in stilul asp, acceptarea lor de catre web-server depinde de configurare */
%> si <script language="php">
/* forma disponibila oricand, putin folosita */
</script> nu mai sunt valabile in versiunile mai noi de php.
Adauga un comentariu la aceasta sectiune.
Nimic de afisat.
Adauga un comentariu la aceasta sectiune.