Разрешить косую черту и æ, ø, å в preg_match - PullRequest
0 голосов
/ 18 августа 2011

Как видно из названия, мне просто нужно разрешить обычную косую черту в preg_match. Я думал, что это было что-то вроде / или что-то. Но это не работает.

Мне также нужно разрешить использование европейских букв: æ, ø, å. Как это сделать?

Может кто-нибудь сказать мне это? :-)

Пример

if(preg_match("/^[a-zA-Z -]+$/", $_POST["last_name"]) == 0)
                {
                    $errMsg = "Dit efternavn må kun indeholde bogstaver, mellemrum og bindestreg.<br>";
                }

А потом я делаю if(count($errMsg)==0){ }

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 18 августа 2011

Эти символы можно использовать как обычно, чтобы использовать косую черту (/).вам нужно будет избежать их с обратной косой чертой (\).Например:

preg_match("%^[-a-zA-Z æøå\/]+$%");

Также обратите внимание, что вы можете использовать любой символ в качестве разделителя, может быть целесообразно использовать символы, которые вряд ли появятся в самом шаблоне (в данном случае я выбрал %).

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

Поместите æøå в свое регулярное выражение, чтобы соответствовать этим персонажам.Чтобы соответствовать слешу, просто избегайте его с помощью одного обратного слеша.

0 голосов
/ 18 августа 2011
if(preg_match("/^[a-zA-Z -\/æøå]+$/u", $_POST["last_name"]) == 0)
if(preg_match("~^[a-zA-Z -/æøå]+$~u", $_POST["last_name"]) == 0)

u модификатор для UTF-8 Модификаторы

Вам нужно экранировать косую черту или изменить разделитель на любой другой, т.е. ~, как во втором примере

u modofier важен

Пример:

$str=ord(166);
if(preg_match('~[æ]~',$str)){
    print 'without';
}
if(preg_match('~[æ]~u',$str)){
    print 'with';
}

только для печати without В первом примере æ рассматривается как два символа, и каждый из них соответствует

...