Пэлт
PHP:
if(!preg_match(‘/^[0-9a-zA-Z-_.]+$/’, $string)) $error = ‘Разрешены только русские и английский буквы’;Действительно этот фильтр работает только с английскими буквами.
Как надо написать, чтобы разрешены были только русские буквы, английские буквы и цифры. А символы и прочая херня пусть отсекается
— Добавлено —
Понял. Лишняя ^ стояла. Вопрос решён
don.bidon
зобанили в гугле?
alexphp
То есть, вы считаете, что «шапочка» (символ ^) не нужна? А у меня получилось вот так:
PHP:
<?php $string1 = «абвгдеABCDE01234»; $error = ‘Для стринга1: Разрешены только русские и английские буквы</br>’; echo $error; } else { echo «Для стринга1: всё OK!</br>»; } $string2 = «ABCDE01234абвгде»; $error = ‘Для стринга2: Разрешены только русские и английские буквы</br>’; echo $error; } else { echo «Для стринга2: всё OK!</br>»; } /* Вывод: Для стринга1: всё OK! Для стринга2: Разрешены только русские и английские буквы */И как это объяснить? Кроме как неадекватным поведением preg_match’a, за что я лично его не люблю, о чём я писал ещё вот здесь в конце темы:
https://php.ru/forum/threads/reguljarnye-vyrazhenija-dlja-kirillicy-i-simvolov.54968/page-2
don.bidon
https://ru.stackoverflow.com/questions/417568/preg-match-понимает-не-все-русские-буквы
Пэлт
Я подозревал что в этом может быть дело.. Внатуре странная штука preg_match
Sail
Шаблон из цифр, латинских символов, дефиса, подчёркивания и точки.
Шаблон обязывает набор символов, в нём обозначенный находиться в конце строки (символ $).
Проверяем в условии отрицательный вариант возврата функции.Всё как обычно: получаем результат выполнения того кода, что написан, а не того, что придуман
— Добавлено —
Есть ещё шаблон с отрицанием… Например: /[^а-ЯёЁА-Я]+/
При необходимости — добавить пробельный символ (s)
— Добавлено —/^[а-яёЁА-Яdw]+$/u
Соответственно, если строка «не содержит» данный шаблон — то в ней есть «символы и прочая херня с пробелами»
don.bidon
о да, шапочка была неспроста
alexphp
Да, это интересный вариант. Наверное, сработает даже без «d», потому что «d», если не ошибаюсь, является подмножеством «w»?
Sail
Да, зарапартовался
Плюс к цифрам ещё и подчёркивание.