Regex Help - Идентификация символов - PullRequest
0 голосов
/ 15 августа 2011

Я пытаюсь использовать регулярные выражения для проверки ввода от пользователя, я хочу разрешить любую букву в алфавите, цифры, пробелы и следующие символы:

! £ $% & * () _ + []:; @ ~ # <>? . -

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

<?php
    $title = $_POST['title'];

    if (!preg_match('/\/^[a-zA-Z0-9\s!£$%&*()_+[\]:;@~#<>?,.-]+$\//m', $title)) {
        $error = "Photo name contains unsafe characters.";
        $solution = "<a href=\"javascript:history.go(-1)\">Try again?</a>";
    }

    if ($error) { echo("$error");
?>

Почему я всегда неправильно понимаю эти регулярные выражения, просто когда я думаю, что начинаю понимать, я скоро понимаю, что на самом деле это не так! : P

Если кто-нибудь может мне помочь и, возможно, объяснить, почему мой пример не работает, чтобы я мог учиться на своих ошибках, которые были бы очень благодарны, спасибо!

1 Ответ

1 голос
/ 15 августа 2011

У вас есть некоторые дополнительные / до ^ и после $, этот должен работать:

preg_match('/^[a-zA-Z0-9\s!£$%&*()_+[\]:;@~#<>?,.-]+$/m', $title)

Также модификатор m заставит $ соответствовать концу строкии разрешить кому-либо добавлять любой символ после первой строки, поэтому вам следует удалить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...