En oo kovinkaan paljoa tutustunu preg_matchiin joten kysynkin miten kiellän vielä merkin "
koodi on tällänen nyt
if(preg_match("/[.,|\[\]+\/\\? -]+/", $knimi)) { echo 'Kiellettyjä merkkejä'; return; }
Lisäät vaan sinne lainausmerkkien väliin \" niin sillä sen pitäisi mennä.
Oon pihalla. Minkä lainaus merkin väliin?
<?php /* Kiellettyjen merkkien lista */ if (preg_match('/[.,|\[\]+/\\?\s-"]+/', $knimi)) { echo "Kiellettyjä merkkejä"; return; } ?>
Mutta eikö helpompi olisi käyttää pitkän, epäsäännöllisen ja mahdollisesti vielä jopa vajavaisen (veikkaisin että tuosta listasta uupuu mm. !#@£$ yms.) sijasta listaa sallituista merkeistä? Eli tyyliin [a-zA-Z0-9äöåÄÖÅ_] joka sallisi kirjaimet (myös ääkköset), numerot ja alaviivan?
<?php if (!preg_match("/^[a-zA-Z0-9äöåÄÖÅ_]*$/i", $knimi)) { echo "Kiellettyjä merkkejä"; return; } ?>
PS: Ei kannata välttämättä yrittää kieltää kaikkea mahdollista, joskus on helpompaa vain sallia tietyt...
Muoks: Ja tuohon on helppo upottaa myös pituustarkistus, * tilalle vain +{4,16} ja minimipituus on tämän jälkeen 4, maksimipituus 16 merkkiä.
Miksi tulee tälläinen ilmoitus
Warning: preg_match(): Compilation failed: nothing to repeat at offset 25 in /home/*****/public_html/****/rekisteroidy.php on line 194
Voisko joku tehä ton niin että sallii merkit ^ *
Niin mä käytän tota leftoverin jälkimmäistä vaihtoehtoa
<?php if (!preg_match("/^[a-zA-Z0-9äöåÄÖÅ_]+{2,11}$/i", $knimi)) { echo "Kiellettyjä merkkejä"; return; } ?>
ota plussa pois { edestä ja lisää alaviivan jälkeen ^\*
Aihe on jo aika vanha, joten et voi enää vastata siihen.