1 HTML ÉS PHP ŐSZI FÉLÉV Szövegek kezelése PHP-val
2 Szövegek tárolása
Az UTF-8 kicsit részletesebben 3 Az UTF-8 minden karaktert 1-6 bájton tárol Ez összesen 1 111 998 különböző karakter tárolását teszi lehetővé. Jelenleg 109 384 van kiosztva. P É H Á P É 80 195 137 72 195 129 80 195 137 A magyar ékezetes betűk pl. 2 bájton tárolódnak
Az UTF-8 kicsit részletesebben 4 P É H Á P É 80 195 137 72 195 129 80 195 137 Ha ezt a bájtsort hibásan ASCII-ként értelmezzük: P Ã? H Ã? P Ã?
A PHP és az UTF-8 viszonya 5 A PHP sokáig teljesen hülye volt az UTF-8-hoz Minden karaktert 1 bájtosnak tekintett Aztán bevezették az ún. multibyte szövegkezelő függvényeket, melyek már támogatják az UTF-8-t Ezek mindenben megegyeznek a hagyományos szövegfüggvényekkel, viszont a nevük mb_ előtaggal kezdődik Ha választhatunk, MINDIG használjuk ezeket!
A PHP és az UTF-8 viszonya 6 Hagyományos szövegfüggvény: strlen("péhápé") => 9 Multibyte szövegfüggvény: mb_strlen("péhápé") => 6 És ilyen könnyű kicselezni a rosszul megírt jelszóhossz-ellenőrző kódot
Multibyte kódolás beállítása 7 mb_internal_encoding("utf-8"); A multibyte szövegfüggvények nem csak az UTF-8- at tudják kezelni, ezért külön meg kell határozni, hogy melyik kódolást használjuk Ha ezt elfelejted, akkor nem fognak jól működni! Lehetőleg már a szkript elején állítsd be!
UTF-8 összefoglaló 8 Tehát az UTF-8 biztonságos használatához az alábbiak szükségesek: UTF-8 kódolással kell menteni a forrásfájlt HTML: <meta charset="utf-8" /> PHP: mb_internal_encoding("utf-8"); Folytatása következik
9 Szövegfüggvények
Szöveg hossza 10 mb_strlen("wétéef?!!") => 9 Megszámolja, hogy hány karakterből áll a paraméterként megadott szöveg
Keresés a szövegben 11 mb_strpos( miben, mit ) Megkeresi az egyik megadott szöveget a másikban Ha sikerült megtalálni, akkor visszaadja az első előfordulási helyét, 0-tól számozva Tehát ha a szöveg elején van, akkor 0-t ad vissza; ha a második karaktertől kezdődik, akkor 1-et, stb. Ha nem található, FALSE-t ad vissza A kis- és nagybetűk meg vannak különböztetve
Keresés a szövegben 12 FIGYELEM! Ez az egyik olyan eset, amikor a 0 és a FALSE eredmény két különböző dolgot jelent! Így az ellenőrzésnél az azonosság operátort kell használni: if(mb_strpos($txt, "xyz") === false) { } /* Nem található */ Három egyenlőségjel
Keresés a szövegben 13 $str = "This is SPARTAAA!"; mb_strpos($str, "is") => 2 mb_strpos($str, "This") => 0 mb_strpos($str, "ááá") => false mb_strpos($str, "spar") => false
Szövegrész kiemelése 14 mb_substr( str, kezdőpont, hossz ) Visszaadja a megadott szövegnek egy részét A pozíció számozása itt is 0-tól kezdődik A hossz paramétert nem kötelező megadni Ha nincs megadva, akkor a szöveg végéig fog menni
Szövegrész kiemelése 15 $str = "Alma van a vásárban"; mb_substr($str, 2, 14) => ma van a vásár mb_substr($str, 2) => ma van a vásárban mb_substr($str, 0, 4) => Alma mb_substr($str, 13) => sárban
Szöveg tisztítása 16 trim(" szöveg ") => "szöveg" ltrim(" szöveg ") => "szöveg " rtrim(" szöveg ") => " szöveg" Eltávolítja a felesleges szóközöket a szöveg elejéről és végéről Az ltrim csak az elejéről távolítja el (left) Az rtrim csak a végéről távolítja el (right)
Szövegrész lecserélése 17 str_replace( mit, mire, miben ) str_replace("hate", "love", "I hate PHP") => "I love PHP" A megadott szöveg összes előfordulását lecseréli egy másikra A kis- és nagybetűk meg vannak különböztetve FONTOS! Nem változtatja meg a tárgyszöveget, hanem egyszerűen visszaadja az eredményt!
Kis- és nagybetűssé alakítás 18 mb_strtoupper("péhápé!") => PÉHÁPÉ! mb_strtolower("péhápé!") => péhápé! A szöveg összes betűjét kis- vagy nagybetűvé alakítja A többi karaktert békén hagyja
Számok formázása 19 number_format( szám, tizedesek, tört elválasztó, ezres elválasztó ) Formázza a megadott számot Tizedesek Tört elválasztó ennyi tizedes jegyre kerekíti az egészrészt a törtrésztől elválasztó karakter Ezres elválasztó az ezres csoportok elválasztója Ezek közül nem kötelező mindegyiket megadni Ha nem adod meg mindet, alapértelmezett értékekre áll be
Számok formázása 20 number_format(12345.678) => "12,346" number_format(12345.678, 1) => "12,345.7" number_format(12345.678, 5) => "12,345.67800" number_format(12345.678, 5, ",", " ") => "12 345,67800"
Sortöréses szöveg kiírása 21 nl2br("ez egy többsoros szöveg") => "Ez egy<br />többsoros szöveg Többsoros szövegek kiírásakor a sorok végére <br /> taget kell tenni Ez a függvény automatikusan elhelyezi ezeket a tageket
22 Szövegfüggvény teszt
23 Űrlap ellenőrzése Demonstráció
Hibaüzenetek elnyelése 24 print($nemletezo) print(@$nemletezo) => PHP HIBA! => (semmi) Ha egy változó elé @ jelet teszünk, a PHP nem fog hibát dobni, ha nem létezik Ha egy függvény elé @ jelet teszünk, a PHP elnyel minden olyan hibát, amit a függvény kiírna Csak akkor használd, ha a programod a hiba ellenére is működőképes marad! Saját programozási hibát TILOS így elfedni!
25 Gyakorlati feladat
Gyakorlati feladat 26 Ha a megadott szöveg üres Ha a szöveg 8 karakternél rövidebb vagy 14 karakternél hosszabb