ucwords mb_strtolower
4 naročniki
4 naročniki
Ker me motijo nepregledno (ne)urejena imena, velike, male črke itd.
sem sestavil spodnjo vrstico, ki opravi večino željenega, vse je lepo formirano, razen če se ime začne na ČŠŽ
ucwords(mb_strtolower(substr($row['stranka'], 0, 25),'utf8'), ' .')
kako to rešim, na googlu ne najdem..
7 odgovorov
Ta funkcija bo rešila tvoj problem :)
public function ucfirst($str, $encoding = 'UTF-8'){
$firstChar = mb_substr($str, 0, 1, $encoding);
$str = mb_strtoupper($firstChar, $encoding) . mb_substr(mb_strtolower($str, $encoding), 1, mb_strlen($str), $encoding);
return $str;
}
Ne, ne bo, ker ucwords naredi vsako prvo črko v besedi uppercase... Torej oboje ime in priimek morata biti z veliko...
mprose, kot prvo, substr zamenjaj z mbsubstr, kot drugo pa se prepričaj, da imaš nastavljen pravi locale s setlocale('slSI.UTF-8'); oz. kar je na voljo v tvojem sistemu (v linuxu to pogledaš z locale -a)
funkcija, ki jo iščeš, je mbconvertcase
$popravljen = mb_convert_case(substr($row['stranka'], 0, 25), MB_CASE_TITLE, "UTF-8");
Tale mbconvertcase je super, razen pri s.p in d.o.o spremeni v S.p. in D.o.o., vendar že služi namenu.
SlimDeluxe:
Ne, ne bo, ker ucwords naredi vsako prvo črko v besedi uppercase... Torej oboje ime in priimek morata biti z veliko...
mprose, kot prvo, substr zamenjaj z mbsubstr, kot drugo pa se prepričaj, da imaš nastavljen pravi locale s setlocale('slSI.UTF-8'); oz. kar je na voljo v tvojem sistemu (v linuxu to pogledaš z locale -a)
Ja, imaš prav :) Nisem dobro prebral in sem razumel, da želi popraviti zgolj ime. V tem primeru seveda moja funkcija deluje, ne pa tudi ko imaš v stringu dve besedi ali več.
mprose7:
Tale mbconvertcase je super, razen pri s.p in d.o.o spremeni v S.p. in D.o.o., vendar že služi namenu.
Ah, za tistih nekaj izjem pa narediš replace
$popravljen = str_ireplace("d.o.o.", "d.o.o.", $popravljen);
- uporabljen je str_ireplace, ki je neobčutljiv na velike/male črke
dodajam: za vsak slučaj daj na začetek fajla še
mb_internal_encoding("UTF-8");
mb_language("uni");
teli encodingi na remote/hosting serverjih so vedno mal na random :)