Php i hrvatska slova

Php ne prikazuje svaki puta hrvatske znakove. Problem je ovakav znači iz naziva npr. “šlag” uzimam prvo slovo i pretvaram ga u veliko, u ovom slučaju š ( $slovo = strtoupper($naziv[0]); ) nadalje pravim folder u direktoriju koji se zove “Š” (znači direktorij već postoji) . Problem je vidljiv u privitku. Nije mi jasno zašto prikaže slovo “š” u nazivu “šlag” a ime foldera prikaže kao “?” . Samo još da napomenem da je $naziv = htmlspecialchars($_POST[‘naziv’]); iako sam isprobao da stavim htmlspecialchars i prije strtoupper ali ne pomaže.

Html head sadrži () tako da nije do toga.

Samo da napomenem da isti kod radi kada su u pitanju druga slova, odnosno bilo koja osim znakova š,đ,č,ć,ž.

Na liniji
:31 ( mkdir($naziv_foldera); )
:36 ( file_put_contents($postavi_file, utf8_encode($content_file)); )


http://www.zaslike.com/files/fri7czl41n99c5fwdavp_thumb.png

Evo slika problema

http://www.zaslike.com/files/fri7czl41n99c5fwdavp.png

Ako sam te dobro skontao, nema veze ako je na HTML-u definisan UTF8. Ako radiš include dvije datoteke izvan HTML-a, odnosno neke datoteke index.php gdje je definisan UTF, svaki include izvan definisanog ti neće pohranjivati opcije sa tim simbolima.
Stavi u datoteku gdje spremaš inforamcije (mkdir i put_file_contents) na vrhu:

Tako bi trebalo raditi.

[quote=“Anachronox”]Ako sam te dobro skontao, nema veze ako je na HTML-u definisan UTF8. Ako radiš include dvije datoteke izvan HTML-a, odnosno neke datoteke index.php gdje je definisan UTF, svaki include izvan definisanog ti neće pohranjivati opcije sa tim simbolima.
Stavi u datoteku gdje spremaš inforamcije (mkdir i put_file_contents) na vrhu:

Tako bi trebalo raditi.[/quote]

Ne radi ni tako. Includam header i pokušao sam prije inlcude staviti ovo što si mi rekao i neće.

krivo koristis funkciju htmlspecialchars da radi s utf znakovima, definiraj ovako:

htmlspecialchars(tvoja_post_vrijednost,ENT_COMPAT,‘UTF-8’);

[quote=“zerocoolos”]krivo koristis funkciju htmlspecialchars da radi s utf znakovima, definiraj ovako:

htmlspecialchars(tvoja_post_vrijednost,ENT_COMPAT,‘UTF-8’);[/quote]

Ništa ni od toga. Pokušao sam ovako:

$naziv =  htmlspecialchars($_POST['naziv'],ENT_COMPAT, 'UTF-8'); 
$slovo = strtoupper($naziv[0]);
$slovo = htmlspecialchars_decode($slovo,ENT_COMPAT, 'UTF-8');

Na taj način mi napravi folder ali u root znači nepronađe folder npr. “Š” pa da u njemu napravi. I folder koji napravi se zove “šlag” to bi trebalo biti “Šlag”.

[quote=“dombo”]Ništa ni od toga. Pokušao sam ovako:

$naziv =  htmlspecialchars($_POST['naziv'],ENT_COMPAT, 'UTF-8'); 
$slovo = strtoupper($naziv[0]);
$slovo = htmlspecialchars_decode($slovo,ENT_COMPAT, 'UTF-8');

Na taj način mi napravi folder ali u root znači nepronađe folder npr. “Š” pa da u njemu napravi. I folder koji napravi se zove “šlag” to bi trebalo biti “Šlag”.[/quote]

a jesi uopće siguran da ti mašina dopušta utf-8 znakove u nazivima foldera?

ovo radim na localhostu.

a možeš li objasniti kako i šta radiš točno, tj, gdje ti ustvari problem nastane… kod pravljanja foldera? kod pristupanja folderu?

znači kako kreiraš i kako mu pristupaš…

[quote=“zerocoolos”]a možeš li objasniti kako i šta radiš točno, tj, gdje ti ustvari problem nastane… kod pravljanja foldera? kod pristupanja folderu?

znači kako kreiraš i kako mu pristupaš…[/quote]

imaš li vremena da se spojiš preko team viewera pa da ti pokažem kod.

teško, jer ne koristim team viewer… možeš kratko samo objasnit kako i šta, ne trebam kod, tako ti mogu reći gdje bi trebao biti problem…

susretao sam se sa dosta problema oko utf-8 znakova i php-a…

Pa ne možeš kreirati folder sa hrvatskim slovima isto kao što ne možeš kreirati niti tablice u MySQL sa hrvatskim slovima. Prije ili kasnije će doći do makljaže. Zaboravi na to.

Evo ovako, znači imam foldere sa nazivima od A-Ž sve su velika slova. U formu unosim neki naziv iz kojega uzimam prvo slovo funkcijom $slovo = strtoupper($naziv[0]); . Dalje pravim putanju do foldera koji želim kreirati $kreiraj_folder = “…/nesto/”.$slovo."/".$naziv; . Znači želim kreirati folder u direktoriju nešto->u folderu A-Ž ( ovisno o prvom slovu naziva) ->naziv koji sam unio u formi . Primjer kako bi to trebalo izgledati je :

u formu unesem “šlag” . A folder koji mi je kreiran bi trebao biti nesto/Š/šlag

Folder kreiram funkcijom mkdir($naziv_foldera); . To tako radi za sva slova osim za znakove š,đ,č,ć,ž.

Ovo što Creatif kaže, vjerojatno ćeš kad tad naići na probleme.

Pada mi na pamet da bi sve kvakaste znakove mogao zamijeniti s nekom specijalnom kombinacijom znakova.
Kvakastih znakova (kako mi se sviđa ovo kvakasto :slight_smile: ) ima samo 10 ako se ne varam, šđžčćŠĐŽČĆ.
Nemoj zaboraviti ni dž, DŽ.

Možda ovo pomogne?
Ja sam imao sličan problem kad sam uzimao prva slova sa mb_substr($neki_naziv), 0, 1 ako je prvo slovo bio neki naš dijakritički znak izbacivalo je te upitnike.
Riješio sam to kad sam stavio: mb_substr($neki_naziv), 0, 1, ‘UTF8’

[quote=“dombo”]Evo ovako, znači imam foldere sa nazivima od A-Ž sve su velika slova. U formu unosim neki naziv iz kojega uzimam prvo slovo funkcijom $slovo = strtoupper($naziv[0]); . Dalje pravim putanju do foldera koji želim kreirati $kreiraj_folder = “…/nesto/”.$slovo."/".$naziv; . Znači želim kreirati folder u direktoriju nešto->u folderu A-Ž ( ovisno o prvom slovu naziva) ->naziv koji sam unio u formi . Primjer kako bi to trebalo izgledati je :

u formu unesem “šlag” . A folder koji mi je kreiran bi trebao biti nesto/Š/šlag

Folder kreiram funkcijom mkdir($naziv_foldera); . To tako radi za sva slova osim za znakove š,đ,č,ć,ž.[/quote]

kao što su vec cc i masta rekli, bolje se ne igrati s tim…

no ako vec zelis, znam gdje je vjerojatno problem, a to bi bio problem sa znakovima koje dobijas iz forme, možda samo igledaju kao kad ti ih printa php kao šđ… ali nisu takva slova…

testiran kod:

header('Content-Type: text/html; charset=utf-8');
echo urldecode($_POST['sta_vec_zelis']);
  • mozda ces morati u formu staviti:
    accept-charset=“UTF-8”

Odustajem od ovog načina. Zamijeniti ću te znakove sa nekim drugima. Nazvat ću foldere umijesto “Š” -> “Sh” i tako. Jer ako mi ne radi localno sumnjam da će na serveru raditi.

pa koristi gore moj kod, tocno sam ti pokazao kako da dobijes prave utf znakove poslije forme… testirao sam i tako radi…

Radi na taj način, ali će morati koristiti i mb_string funkcije, a koliko sam se sreat s tim mb_string nisu standardni dio instalacij i mislim da ih se rijetko kad instalira na server. I dođe do problema prije ili kasnije, a bolje je da se toga riješi ranije kada radi lokalno nego jednom kad mu site ode u production stage.

Riješio sam ovo. Napravio sam funkciju koja pretvara npr. “Š” i “š” u “S1”. I folder sam nazvao “S1” tako da sada nemam problema s tim.

Sada sam naišao na još jedan problem. Mi u našoj abecedi imamo i znakove “Dž”,“Lj”,“Nj” , to su naravno dva znaka u stringu. Imam sada napravljeno da mi uzima prvo slovo što naravno ne može prepoznati navedene znakove. Na koji način mi je najlakše provjeriti da li su navedeni znakovi na prvom mjestu?