Regexp karakter filtresi

3 Cevap php

Benim kod, ben bir yere Google'da regexpi kullanmak, ama ben bunu anlamıyorum. :)

preg_match("/^[\p{L} 0-9\-]{4,25}$/", $login))

p{L} Bu ne demek? Ben ne yaptığını biliyorum - ulusal harfleri ile tüm karakterler dahil.

Ve ikinci soru, ben oyun içi sohbet için kullanıcı girişi sterilize etmek istiyorum, bu yüzden yukarıda belirtilen regexp ile başlıyorum, ama çoğu özel karakterler izin vermek istiyorum. Bunu yapmak için kısa yol nedir? Birisi zaten bunu yapmak için bir regexpi hazırladı?

3 Cevap

\ P için bakınız Unicode character properties temelde belirli bir karakter sınıfının (harf, sayı, ...) olmak üzere karakter gerektirir.

Filtre için bu filtre tam olarak ne istediğinizi bağlıdır ancak Unicode karakter sınıfları bakarak i (tek tek sizin için yararlı görünüyor herhangi bir karakter ekleyerek) düşünmek gitmek için iyi bir yoldur.

Düzenli ifade gelir:

Bir mektup, bir boşluk, bir dizi ya da çizgi ile başlayan 4 ve 25 arasında uzunluğu ile her dize.

\ P {L} anlamına gelmektedir: "L" "herhangi bir harf" anlamına özelliği "L", eşleşen bir karakter.

Anlamak için nasıl sıradanifade çalışması:

http://en.wikipedia.org/wiki/Regular%5Fexpression

http://www.php.net/manual/en/regexp.reference.unicode.php

En karakterleri eklemek istiyorsanız, neden sadece izin verilmez olanları dışlamak değil?

Sen ^ karakter sınıfında ile yapabilirsiniz

[^characters I don't want]

Yasal Uyarı: Siyah liste yapmak için çalışıyoruz ne bağlı olarak en iyi yaklaşım olabilir ve beyaz liste daha kapsamlı olmak zorunda olmayabilir.