PHP - folksonomy etiketi kontrol regex

1 Cevap php

Ben bir free form folksonomy sistemi için sunulan etiketlerin değerlerini kontrol etmek için regex oluşturmaya çalışıyorum. İşte şimdi ne var.

if (!preg_match('/([^-\\a-zA-Z0-9._@\'])+/',$proposedtag)) {
    //true, good
    return true;
} else {
    //false, bad characters
    return false;
}

Işareti tire, eğik çizgi, eğik çizgi, az, AZ, 0-9, nokta, çizgi, ve tek tırnak işareti, ve tüm diğerleri vermemek: Ben izin vermek istiyorum.

Ben bir negatif karakter sınıfı, bu gitmek için yoludur eminim ...

However my code above seems to allow other characters (such as +), and I'm not sure why. Also as a sidenote, I'm not sure if I'm making sure I don't inadvertently allow SQL injections. Any tips?

1 Cevap

Ben sizin karakter sınıfı içinde ters eğik çizgi karakterleri ile kaçan bir mesele olduğuna inanıyorum. Bunun yerine, bu deneyin, ben onu beslenen testlerinde daha iyi iş gibi görünüyor. (Ben sonuna taşınır) backslash'lar üzerine çift kaçışa Not:

if (!preg_match('/([^\-a-zA-Z0-9._@\'\\\\])+/',$proposedtag)) {