[ BLACK_SWORD @ 17.02.2010. 13:21 ] @
Pozdrav!

Napravio sam skriptu za registraciju korisnika, skripta sadrzi

korisnicko ime
ime
prezime
lozinka
email
spol
godina rodjenja


e sad ja sam stavio da kad korisnik upisuje ime ili prezime da ako upise prvo slovo malim da skripta pretvori prvo slovo u veliko a ostala malo:

Primjer

Code:
include "Postavke.php";

$_POST[ime] = ucfirst($_POST[ime]);
$_POST[ime] = ucfirst(strtolower($_POST[ime]));

$_POST[prezime] = ucfirst($_POST[prezime]);
$_POST[prezime] = ucfirst(strtolower($_POST[prezime]));

$imebaze="INSERT INTO korisnici (korisnickoime, ime, prezime, lozinka, email, spol, dan, mjesec, godina)

VALUES ('$_POST[korisnickoime]', '$_POST[ime]', '$_POST[prezime]', '$_POST[lozinka]', '$_POST[email]', '$_POST[spol]', '$_POST[dan]', '$_POST[mjesec]', '$_POST[godina]')";



e sad kad korisnik upise npr prezime pavloviĆ skripta ce upisati u mysql bazu PavloviĆ greška je što slovo šđžćč ne prepoznaje ako je veliko i ostat ce veliko, znali neko kako to da napravim,


i interesuje me dali se može uraditi npr. ako neko upiše prezime pavloviĆ-golijaNin da skripta pretvori u Pavlović-Golijanin i da upiše u mysql bazu.

Nadam se da ste me razumjeli. Hvala na pomoći
[ Nikola Poša @ 17.02.2010. 13:41 ] @
Probaj sa mb_strtolower. Funkcija strtolower ne može da radi kako treba kad naiđe na multibyte karaktere...
[ Man-Wolf @ 17.02.2010. 13:45 ] @
Koristi ovu f-ju: mb_strtolower i trebalo bi da bude ok.

Citat:

i interesuje me dali se može uraditi npr. ako neko upiše prezime pavloviĆ-golijaNin da skripta pretvori u Pavlović-Golijanin i da upiše u mysql bazu.


Moze :-) E sad, da li ima neki "simple way", pojma nemam... Probaj sa ovom f-jom: mb_convert_case

[ Nikola Poša @ 17.02.2010. 14:03 ] @
Citat:
BLACK_SWORD: i interesuje me dali se može uraditi npr. ako neko upiše prezime pavloviĆ-golijaNin da skripta pretvori u Pavlović-Golijanin i da upiše u mysql bazu.

Možda ovako:
Code:
$prezime = preg_replace(array('#([\-\s])(\p{L}{1})#e', '#(^\p{Ll}{1})#e'), array("mb_strtoupper('\\2')","mb_strtoupper('\\1')"), mb_strtolower($prezime));

A može naravno i komplikovanije:
Code:
$niz = explode('-', $prezime);

foreach ($niz as &$p) {
    $p = ucfirst(mb_strtolower(trim($p)));
}

$prezime = implode('-', $niz);
[ BLACK_SWORD @ 17.02.2010. 17:28 ] @
neradi opet ako korisnik unese prezime "pavloviĆ" u bazu upiše "PavloviĆ" nece skripta da veliko Ć pretvori u malo
[ Nikola Poša @ 17.02.2010. 17:39 ] @
A jesi probao da provučeš taj neki string kroz mb_strtolower funkciju? Da bi koristio te mb_* funkcije, u tvojoj instalaciji PHP-a mora da bude omogućena "Multibyte String" ekstenzija. Ali verujem da si to isprobavao u lokalu, i da je ta ekstenzija omogućena, pa mi onda jedino pada napamet da probaš da proslediš i drugi argument toj istoj funkciji, koji će da je "obavesti" o encode-ingu, ovako:
Code:
mb_strtolower($prezime, "UTF-8");
[ BLACK_SWORD @ 17.02.2010. 17:55 ] @
probo sam neradi,

a dali može se napraviti da kad korisnik unosi prezime da nemože unijeti znakove /()"#!$%&?=*][§}{ i da nemože unijeti brojeve i odvajati riječi, već samo da upiše prezime i onda cu staviti

Code:

$_POST[prezime] = ucfirst($_POST[prezime]);
$_POST[prezime] = ucfirst(strtolower($_POST[prezime]));


pa ako bude piso prvo slovo malim da skripta pretvori u veliko i da upise u bazu, a ako bude piso razmake ili brojeve i znakove !"#)($(/&%($%# da mu se pojavi poruka da nemože unositi te znakove.