Функция с регуляркой

Статус
В этой теме нельзя размещать новые ответы.

Sunday

Cōgitō ergō sum
Регистрация
13 Дек 2009
Сообщения
823
Реакции
342
Есть такая функция
PHP:
function validStr($str=""){
    $str = trim($str);
    if($str == "") return false;
    $str = preg_replace("#(\s){2,}#umi", " ", $str);
    if(!preg_match('#[a-zа-я0-9]#usmi', $str, $matches)>0){
        return false;
    }
    return $str;
}
Объясните пожалуйста, какие знаки, буквы, символы в конечном итоге будут разрешены? Пробел здесь разрешен?
Я хочу разрешить пробел, дефис и подчеркивание. Правильно ли будет изменить так?
PHP:
 if(!preg_match('#[-a-zа-я0-9_\s]#usmi', $str, $matches)>0){
 
Правильно.

trim, особенно без 2-го параметра и без регулярки пробелы режет в начале и в конце строки.

сам паттерн – между знаками ##.
Вне их – модификаторы:
u – на входе символы UTF-8
m – многострочная строка
i – какой регистр – пофиг
s – точка кроме любого символа, начинает захватывать и символ нов. строки

обычные метасимволы:
\s – таб, перевод строки или пробел
(\s){2,} таб, перевод строки или пробел повторяется 2 и более раз
a-z – любая латинская буква
а-я – любая кирилическая буква
0-9 – любая цифра
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху