PHP - тэг фолксономии, проверяющий регулярные выражения - PullRequest
0 голосов
/ 08 августа 2009

Я пытаюсь создать регулярное выражение для проверки значений представленных тегов для системы фолксономии свободной формы. Вот что у меня сейчас.

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

Я хочу разрешить: дефис, обратную косую черту, косую черту, a-z, A-Z, 0-9, точку, подчеркивание, знак и знак одинарной кавычки и запретить все остальные.

Я почти уверен, что отрицательный класс персонажей - это то, что нужно ...

Однако мой код выше, кажется, разрешает другие символы (такие как +), и я не уверен почему. Кроме того, в качестве идентификатора, я не уверен, что я не допускаю непреднамеренного внедрения SQL-инъекций. Любые советы?

1 Ответ

2 голосов
/ 08 августа 2009

Я считаю, что это проблема с символами обратной косой черты внутри вашего класса персонажей. Попробуйте это вместо этого, кажется, лучше работает на тестах, которые я давал. Обратите внимание на двойной экранированный слеш (который я переместил в конец):

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