17 karakterlancok kezelese

Click here to load reader

Upload: blind-man

Post on 11-Jun-2015

546 views

Category:

Documents


2 download

TRANSCRIPT

17. RAKarakterlncok kezelseA Vilghl valjban szveges fjlokra pl krnyezet, s igazbl nem szmt, mivel gazdagodik a jvben a tartalma, a mlyn mindig szveges llomnyokat fogunk tallni. gy nem meglep, hogy a PHP 4 sok olyan fggvnyt biztost, amellyel szvegmveletek vgezhetk. Az ra sorn a kvetkezket tanuljuk meg: Hogyan formzzunk karakterlncokat? Hogyan hatrozzuk meg a karakterlncok hosszt? Hogyan talljunk meg egy karakterlncon belli karakterlncot? Hogyan bontsuk szt a karakterlncot alkotelemeire? Hogyan tvoltsuk el a szkzket a karakterlncok vgrl vagy elejrl? Hogyan cserljnk le karakterlnc-rszleteket? Hogyan vltoztassuk egy karakterlncban a kisbetket nagybetre s fordtva?

320

17. ra

Karakterlncok formzsaA megjelenteni kvnt karakterlncot eddig egyszeren kirattuk a bngszbe. A PHP kt olyan fggvnyt tartalmaz, amely lehetv teszi az elzetes formzst, fggetlenl attl, hogy tizedestrteket kell valahny tizedes pontossgra kerekteni, egy mezn bell kell jobbra vagy balra igaztani valamit, vagy egy szmot kell klnbz szmrendszerekben megjelenteni. Ebben a rszben a printf() s az sprintf() fggvnyek ltal biztostott formzsi lehetsgekkel ismerkednk meg.

A printf() fggvny hasznlataHa mr dolgoztunk C-vel, biztosan ismers lesz a printf() fggvny, amelynek PHP-s vltozata hasonl, de nem azonos azzal. A fggvny bemenete egy karakterlnc, ms nven a formtumvezrl karakterlnc (rviden formz karakterlnc vagy egyszeren formz), emellett tovbbi, klnbz tpus paramterek. A formz karakterlnc ezen tovbbi paramterek megjelentst hatrozza meg. A kvetkez kdrszlet pldul a printf() fggvnyt hasznlja, hogy egy egsz szmot decimlis rtkknt rjon ki: printf("az n szmom az %d", 55 ); // azt rja ki, hogy "az n szmom az 55" A formz karakterlncban (ami az els paramter) egy klnleges kdot helyeztnk el, amely talaktsi meghatrozsknt ismert. JDONSG Az talaktsi meghatrozs szzalkjellel (%) kezddik, s azt hatrozza meg, hogyan kell a printf() fggvny neki megfelel paramtert kezelni. Egyetlen formtumvezrl karakterlncba annyi talaktsi meghatrozst rhatunk, amennyit csak akarunk, feltve, hogy a printf() fggvnynek ugyanennyi paramtert adunk t a formzt kveten. A kvetkez kdrszlet kt szmot r ki a printf() hasznlatval: printf("Az els szm: %d
\nA msodik szm: %d
\n", 55, 66 ); // A kirt szveg: // Az els szm: 55 // A msodik szm: 66 Az els talaktsi meghatrozs a printf() msodik paramternek felel meg, ami ebben az esetben az 55. A kvetkez talaktsi meghatrozs a 66-nak felel meg. A szzalkjelet kvet d bet miatt a fggvny az adatot decimlis egszknt rtelmezi. A meghatrozsnak ez a rsze tpusparamterknt ismeretes.

Karakterlncok kezelse

321

A printf() s a tpusparamterekEgy tpusparamterrel mr tallkoztunk, ez volt a d, amely az adatot decimlis formtumban jelenti meg. A tbbi tpusparamtert a 17.1. tblzatban lthatjuk.

17

17.1. tblzat TpusparamterekParamter db c f o s x X

Lers A paramtert decimlis szmknt jelenti meg.Egsz szmokat binris szmknt jelent meg. Egy egsz szmot annak ASCII megfeleljeknt jelent meg. A paramtert lebegpontos szmknt brzolja. Egy egsz szmot oktlis (8-as szmrendszer) szmknt jelent meg. A paramtert karakterlnc-llandnak tekinti. Egy egsz szmot kisbets hexadecimlis (16-os szmrendszer) szmknt jelent meg. Egy egsz szmot nagybets hexadecimlis (16-os szmrendszer) szmknt jelent meg

A 17.1. program a printf() fggvnnyel egy szmot a 17.1. tblzat tpusparamterei segtsgvel jelent meg. Vegyk szre, hogy a formz karakterlnc nem egyszeren csak talaktsi meghatrozsokat tartalmaz, minden tovbbi benne szerepl szveg kirsra kerl.

17.1. program Nhny tpusparamter hasznlatnak bemutatsa1: 2: 3: 17.1. program Nhny tpusparamter hasznlatnak bemutatsa 4: 5: 6:

A 17.1. program kimenett a 17.1. brn lthatjuk. A printf() fggvnnyel gyorsan tudunk adatokat egyik szmrendszerbl a msikba talaktani s az eredmnyt megjelenteni.

17.1. braNhny tpusparamter hasznlatnak bemutatsa

Ha a HTML-ben hivatkoznunk kell egy sznre, hrom 00 s FF kz es, a vrs, zld s kk sznt kpvisel hexadecimlis szmot kell megadnunk. A printf() fggvnyt hasznlhatjuk arra, hogy a hrom 0 s 255 kz es decimlis szmot azok hexadecimlis megfelelire alaktsuk t: $piros = 204; $zold = 204; $kek = 204; printf( "#%X%X%X", $piros, $zold, $kek ); // azt rja ki, hogy "#CCCCCC"

Karakterlncok kezelse Br a tpusparamterrel a decimlis szmokat hexadecimliss alakthatjuk, azt nem tudjuk meghatrozni, hogy az egyes paramterek kimenete hny karaktert foglaljon el. A HTML sznkdjban minden hexadecimlis szmot kt karakteresre kell kitlteni, ami problmt okoz, ha pldul az elz kdrszlet $piros, $zold, $kek vltozit gy mdostjuk, hogy 1-et tartalmazzanak. Kimenetl "#111"-et kapnnk. A bevezet nullk hasznlatt egy kitlt paramter segtsgvel biztosthatjuk.

323

17

A kitlt paramterBellthatjuk, hogy a kimenet bizonyos karakterekkel megfelel szlessgre tltdjn ki. A kitlt paramter kzvetlenl az talakt paramtert kezd szzalkjelet kveti. Ha a kimenetet bevezet nullkkal szeretnnk kitlteni, a kitlt paramterben a 0 karaktert az a szm kveti, ahny karakteresre szeretnnk a kimenetet bvteni. Ha a kimenet hossza ennl a szmnl kisebb lenne, a klnbsg nullkkal kerl kitltsre, ha nagyobb, a kitlt paramternek nincs hatsa: printf( "%04d", 36 ) // a kimenet "0036" lesz printf( "%04d", 12345 ) // a kimenet "12345" lesz Ha a kimenetet bevezet szkzkkel szeretnnk kitlteni, a kitlt paramternek tartalmaznia kell egy szkz karaktert, amelyet a kimenet elvrt karakterszma kvet: printf( "% 4d", 36 ) // azt rja ki, hogy " 36"

324

17. ra

Br a HTML dokumentumokban egyms utn szerepl tbb szkzt a bngszk nem jelentik meg, a megjelentend szveg el s utn helyezett cmkvel mgis biztosthatjuk a szkzk s sortrsek megjelentst.