2009-10-15 1 views
0

В моем коде я использую регулярное выражение, которое я где-то искал, но я этого не понимаю. :)Regexp character filter

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

Что это значит p{L} означает? Я знаю, что он делает - все персонажи с национальными письмами.

И мой второй вопрос, я хочу дезинформировать пользовательский ввод для игрового чата, поэтому я начинаю с регулярного выражения, упомянутого выше, но я хочу разрешить большинство специальных символов. Какой самый короткий способ сделать это? Кто-нибудь уже подготовил регулярное выражение для этого?

+0

Только для уточнения: вы не знаете, что делает все регулярное выражение? или вы просто не уверены в части \ p {L}? –

+0

\ p {L}, остальное просто – Thinker

ответ

1

Для \ p см. Unicode character properties в основном это требует, чтобы символ находился в определенном классе символов (Letter, number, ...).

Для вашего фильтра это зависит от того, что именно вы хотите фильтровать, но глядя на классы символов Юникода - это хороший способ, чтобы я подумал (добавив индивидуально любой персонаж, который вам кажется полезным).

0

Регулярное выражение означает:

Каждая строка длиной от 4 до 25, начиная с буквы, пробел, номер или тире.

\ p {L} означает буквально: символ, который соответствует свойству «L», где «L» означает «любая буква».

Чтобы понять, как регулярное выражение работы:

http://en.wikipedia.org/wiki/Regular_expression

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

+0

Это правильно, с добавленными ограничениями, которые должна совпадать с строкой в ​​начале тестовой строки и должна заканчиваться в конце тестовой строки (из-за элементов^и $ в начале и в конце регулярного выражения). –

0

Если вы хотите включить большинство символов, почему не только исключить те, которые вы не позволяете?

Вы можете сделать это с^в вашем характере класса

[^characters I don't want] 

Отказ от ответственности: Черный список может быть не лучший подход в зависимости от того, что вы пытаетесь сделать, и должен быть более тщательным, чем белые листинга.