ucwords mb_strtolower
 
mprose7 17. feb 2016 22:25:19 Pridružen od:
18. mar 2008
911 objav
293 39 6
#1

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..


všeč(0) ni všeč(1) spam(0)
Oprema stanovanj in izris 3d objektov na: Notranja oprema
Trgovina z lesnim hobi programom: Razrez iverala
 
gnome 17. feb 2016 23:23:33 Pridružen od:
27. apr 2010
829 objav
412 47 10
#2

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;
}
všeč(1) ni všeč(1) spam(0)
Adobe Commerce/Magento 2 & Laravel + {VueJS/React} razvijalec | Moj #1 resource za Laravel & PHP | Claude Code alternative 10% OFF
 
SlimDeluxe 18. feb 2016 06:57:53 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#3

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)


všeč(2) ni všeč(0) spam(0)
Freelance Web Developer
 
kelvan 18. feb 2016 07:20:09 Pridružen od:
19. okt 2007
891 objav
658 122 26
#4

funkcija, ki jo iščeš, je mbconvertcase


$popravljen = mb_convert_case(substr($row['stranka'], 0, 25), MB_CASE_TITLE, "UTF-8");
všeč(2) ni všeč(1) spam(0)
 
SlimDeluxe 18. feb 2016 08:58:44 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#5

Bravo, še boljše


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
mprose7 18. feb 2016 09:02:14 Pridružen od:
18. mar 2008
911 objav
293 39 6
#6

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.


všeč(0) ni všeč(0) spam(0)
Oprema stanovanj in izris 3d objektov na: Notranja oprema
Trgovina z lesnim hobi programom: Razrez iverala
 
gnome 18. feb 2016 10:14:14 Pridružen od:
27. apr 2010
829 objav
412 47 10
#7

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č.


všeč(0) ni všeč(0) spam(0)
Adobe Commerce/Magento 2 & Laravel + {VueJS/React} razvijalec | Moj #1 resource za Laravel & PHP | Claude Code alternative 10% OFF
 
kelvan 18. feb 2016 11:33:41 Pridružen od:
19. okt 2007
891 objav
658 122 26
#8

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 :)


všeč(1) ni všeč(1) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se