Nakon ovog poglavlja
Što ćete znati napraviti
- Obrađivati UTF-8 tekst multibyte funkcijama.
- Razlikovati prikaz broja od njegove pohranjene vrijednosti.
- Koristiti nepromjenjive datume i eksplicitne vremenske zone.
Hrvatska slova su važna
String nije nužno broj znakova
PHP string je niz bajtova. strlen broji bajtove pa „č“ u UTF-8 može zauzeti više od jednoga. Za korisnički tekst koristite mb_strlen, mb_substr i mb_strtolower uz UTF-8. Tekst pri HTML ispisu uvijek escapajte.
<?php
$title = 'Čitljiv PHP';
echo mb_strlen($title, 'UTF-8');
echo mb_strtoupper($title, 'UTF-8');
echo htmlspecialchars($title, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
Vrijednost nije prikaz
Računajte stabilno, formatirajte na rubu
Broj 1234.5 u programu nije isto što i lokalizirani prikaz „1.234,50 €“. U unosu ne uklanjajte naslijepo točke i zareze; najprije definirajte očekivani format. Za valute izbjegavajte binarni float kada preciznost mora biti točna.
<?php
$priceInCents = 123450;
$price = $priceInCents / 100;
echo number_format($price, 2, ',', '.') . ' €';
Vrijeme ima kontekst
DateTimeImmutable i vremenska zona
Vrijeme u bazi često spremamo u UTC-u, a korisniku ga prikazujemo u njegovoj zoni. DateTimeImmutable pri promjeni vraća novi objekt pa se izvorna vrijednost slučajno ne mijenja. ISO 8601 dobar je strojni format; lokalni format pripada prezentaciji.
<?php
$createdAt = new DateTimeImmutable(
'2026-07-29 12:00:00',
new DateTimeZone('UTC')
);
$zagreb = $createdAt->setTimezone(new DateTimeZone('Europe/Zagreb'));
echo $zagreb->format('d.m.Y. H:i');
Primijenite naučeno
Vježba: Sažetak događaja
Prikažite naziv, cijenu ulaznice i vrijeme događaja za korisnika u Zagrebu.
- Naziv ograničite multibyte funkcijom.
- Cijenu čuvajte u centima i formatirajte pri prikazu.
- UTC termin pretvorite u Europe/Zagreb.
Za provjeru i nastavak