Разрешить буквенно-цифровую, пунктуацию и пробелы - PullRequest
2 голосов
/ 28 мая 2010

Я довольно новичок в регулярных выражениях, и MAN заставляет меня чувствовать головную боль. Они такие пугающие! Для кампании по электронной почте, которую я делаю, пользователь нажимает на ссылку в письме с несколькими URL-параметрами, заполненными для них, чтобы упростить заполнение формы. Я хочу предотвратить любые хакерские инъекции или как бы это ни называлось, но нужно, чтобы параметры $ _GET были буквенно-цифровыми, имели пунктуацию и имели пробелы. Если у кого-то есть хороший метод для этого, я был бы признателен, но сейчас у меня есть:

foreach($_GET as $m=>$n) {
    $get[$m] = preg_replace('(^[a-z0-9 \-\_\.]+)i',' ',$n);
}

Я хотел бы иметь возможность заменить все символы, НЕ найденные, этим регулярным выражением, которое, как мне кажется, я использую ?!, но я также не могу заставить это работать. Буду признателен за любую помощь в получении этого к работе!

Ответы [ 2 ]

1 голос
/ 28 мая 2010

У вас нет разделителей, а также вы должны поставить + из конечной скобки ]

foreach($_GET as $m=>$n) {
    $get[$m] = preg_replace("/[^a-zA-Z0-9 \-\_\.]+/"," ",$n);
}

Или:

foreach($_GET as $m=>$n) {
    $get[$m] = preg_replace("#[^a-zA-Z0-9 \-\_\.]+#"," ",$n);
}
1 голос
/ 28 мая 2010

Символ ^ живет в квадратных скобках. Итак, ваш код должен быть:

$get[$m] = preg_replace('([^a-z0-9 \-\_\.]+)i',' ',$n);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...