[ BLACK_SWORD @ 12.02.2012. 16:22 ] @
Pozdrav!

Napravio sam funkciju za validaciju korisnickog imena
Code:

    public function _valid_username($username)
    {
        if( ! preg_match("/^([-a-z0-9_-])+$/i", $username))
        {
            $this->form_validation->set_message('_valid_username', '%s nije validno.');
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }


e sad dali mi neko može reći na koji način mogu da napravim da korisničko ime može sadržavat i specijalne znakove npr šŠđĐčČćĆžŽ i da može sadržavat cirilicu?

Dali se može stavit u preg_match funkciju preg_match("/^([-a-za-ža-ž0-9_-])+$/i", $username) i dali će to bit uredu?

Hvala!
[ ivan.a @ 12.02.2012. 16:41 ] @
Probaj:
Code:
if (!preg_match ('/^[a-zA-Z\p{Cyrillic}\d\s\-_]+$/u', $username))

Mada možeš između i ručno upisati dozvoljena slova i znakove. Primer:
Code:
 if ( !preg_match("/[^-a-z0-9_ljnjertzuiopšđasdfghjklčćžѕdžcvbnmLjNjERTZUIOPŠĐASDFGHJKLČĆŽЅDžCVBNMqwertzuiopšđasdfghjklčćžyxcvbnmQWERTZUIOPŠĐASDFGHJKLČĆŽYXCVBNM.]/i", $username) )

Ja inače uvek koristim drugu metodu (znakovi u primeru iznad su napisani ćirilicom, ali forum preslovljava u latinicu).
[ plus_minus @ 14.03.2012. 23:32 ] @
Evo šta se još može koristiti, ako su vam dokumenti u UTF-8.

Nije najbolje na svetu, ali vrši posao. :)

Dovoljno je da samo malo zeznete ctype_alnum funkciju,
uz malu pomoć, dobre stare - str_replace() - on the fly. :)

Pre nego što korisnik uopšte i klikne da bi došao do forme,
negde gde vam zgodno, ugnjezdite ovu funkciju.

Code (php):


# Sve što se ne nalazi unutar validCtype niza neće proći validaciju.
# U ovom slučaju, donja crtica, crtica, tačka i naša bitna slova, bivaju izolovana.

function validCtype(){
     $validCtype =
     array('-','_','.','Č','č','Ć','ć','Ž','ž','Đ','đ','š','Š');
     foreach($validCtype as $isolated_char){
          $isolated_char=html_entity_decode($isolated_char);
     }

     return $validCtype;
}    $validCtype=validCtype();


/* .... ....
 ...
 neki drugi kod, šta već..  
... ....*/

 


I onda je korisnik uneo ime ...

Code (php):


$nick = 'Šalabajđerović_Džičkavac';

# ... i kliknuo na submit.

if(isset($_POST['submit'])) {

     # Pa je zatim uneti tekst malo fltriran...
     $nick=htmlentities($_POST['nick'], ENT_QUOTES, "UTF-8");

     
     # I na kraju izvšena provera.
     if(!ctype_alnum(str_replace($validCtype, '', $nick))){
          echo 'Ime nije validno. Probaj ponovo.';     
     }

 }
 


I to bi bilo to. :)