Ответ 1
Используйте
preg_match('/^[a-z0-9 .\-]+$/i', $firstname)
на моем php я используйте preg_match
для проверки входных текстов.
if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) {
}
Но это позволяет только буквенно-цифровое и не допускать пробелов. Я хочу разрешить пробелы, альфа и числовые. и период (.) и тире (-)
Пожалуйста, помогите мне здесь? спасибо заранее.
Используйте
preg_match('/^[a-z0-9 .\-]+$/i', $firstname)
Если вы не только хотите разрешить ASCII, а затем используйте свойства Unicode:
preg_match('/^[\p{L}\p{N} .-]+$/', $firstname)
\p{L}
- любая буква в любом языке, соответствует также символам на китайском, иврите, арабском и...
\p{N}
любой тип числового символа (означает также, например, римские цифры)
если вы хотите ограничить цифры, используйте \p{Nd}
Единственный трудный бит здесь - тире.
Для пробелов и точек вы можете просто добавить их в свой класс символов, например:
'/^[a-zA-Z0-9 .]+$/'
Легко.
Черта немного сложнее, потому что дефисы имеют особое значение в классе символов, подобном этому (как вы уже знаете, они используются для диапазонов символов типа a-z
). Чтобы указать дефис в классе символов, он должен быть первым символом в классе (т.е. Он не должен находиться между двумя символами, в противном случае он рассматривается как маркер диапазона символов).
Таким образом, ваше выражение будет выглядеть следующим образом:
'/^[-a-zA-Z0-9 .]+$/'
Надеюсь, что это поможет.