PHP – pretvori prvo črko v veliko črko – UTF8 podpora (ucfirst, ucwords, mb_convert_case)
Kot veste php funkciji ucfirst in ucwords ne delujeta pravilno, če imamo v tekstu posebne znake (kot naprimer šumniki (č,š,ž) v UTF8 formatu). Podobne težave nastopijo tudi pri ostalih funkcijah, na primer substr ter strtolower.
Zadevo lahko rešimo tako, da spišemo svojo funkcijo, kjer najprej uporabimo mb_strtolower, potem pa gremo čez vse znake in prvo črko v stringu ter vsako črko za presledkom pretvorimo v veliko črko (capitalized). Nekaj takega je moč najti med komentarji na php.net strani.
Veliko bolje elegantna rešitev je uporaba mb_convert_case funkcije, ki podpira tri načine in sicer:
- MB_CASE_UPPER - pretvori vse črke v velike črke - upper case - capitalized string
- MB_CASE_LOWER - pretvori vse črke v male črke - lower case
- MB_CASE_TITLE - pretvori vsako prvo črko v veliko črko
Primeri uporabe:
-
$utf8String = 'češnja je zdrava';
Edino kar manjka je funkcionalnost ekvivalentna ucfirst funkciji. To lahko rešimo s uporabo mb_substr funkcije, kot je to storil že eden izmed komentarjev na php.net spletni strani:
-
function mb_ucfirst($str, $encoding = 'UTF-8') {
-
$str = mb_strtoupper($firstChar, $encoding) . mb_substr(mb_strtolower($str, $encoding), 1, mb_strlen($str), $encoding);
-
-
return $str;
-
}
Imate tudi vi kakšne težave / predlog za opis rešitve v povezavi z UTF8 / posebnimi znaki? Sporočite pod komentarje.
Podobni članki:
- PHP – delo z UTF-8 stringi oz. podatki – težave s šumniki (č,š,ž)
- PHP – Zen Cart – Easy Populate – UTF8 podpora – UTF8 support
- Zend Search Lucene – UTF8 podpora – iconv težave
- Magento internetna trgovina – kako dodati artikel na prvo stran
- Podpora za šumnike (utd8) v flash animaciji WP-Cumulus
- Stalni UTF-8 problemi – utf8 mysql php – čšž šumniki težave – iskanje znaki – mysql like
- PHP – ZenCart – utf8 – slovenski jezik – slovenski prevod – pretvorba jezikov
- Zen Cart – UTF-8 podpora – pretvorba
- PHP – branje Excel (.xls) datoteke – Excel UTF8 branje
- Internet explorer 8 – podpora HTML & DOM standardom



June 3rd, 2008 ob 9:12 am
hja, ne vela čist točn tko kakor je kle napisan, vsaj pr men u službi ne
in sicer tale vrstica v capitalize funkciji:
tole ne dela na multibyte charachters (Ž Š Č Đ), nevem zakaj ne, samo se mu zalomi pri s{0}...tkole sem pa potem zgruntov, da dela zdej:
June 3rd, 2008 ob 9:37 am
Hvala, sem popravil.
Glavni problem tukaj je, da mb_substr ne deluje pravilno, če kot int $length podaš kot null. Pri substr bi to pomenilo celotni string, pri mb_substr pa pomeni to 0.
Zato moraš uporabiti za parameter int $length mb_strlen (zgoraj si uporabil strlen, kar ne bo vrnilo pravilne dolžine, če bo string vseboval posebne znake).
June 3rd, 2008 ob 9:52 am
Mogoče bo lažje s CSS ukazom:
p:first-letter { }
June 3rd, 2008 ob 8:08 pm
tele kodni standadi so samo zato da se mi lahko zajebavamo
ti lukas men deluješ kot ena kopija Luka Fanlooka
June 3rd, 2008 ob 9:25 pm
Ta luka je vele znani spamer.
June 4th, 2008 ob 12:01 am
[...] komentarji brezimenko - Internet explorer -Roky - Php - pretvori prvo črko Boštjan - Php - pretvori prvo čAntony - Php - pretvori prvo črkRoky - Php - pretvori prvo črko [...]