почему регуляное выражение не работат в скобках?

autos

Гуру форума
Регистрация
14 Июл 2007
Сообщения
202
Реакции
57
есть строка, в скобках может быть разное количество параметров
$str = 'function(6a, 1)';
$str = 'function(6a, 1, 100n)';

нужены только параметры в скобках, такой вариант работает
preg_match_all('#\((.+?)\)#', $str, $param);

print_r($param); //Array ( [0] => (6a, 1) )

но нужны из символов только буквы и цифры ( и запятая)

почему тогда не работают такие варианты?
preg_match_all('#\((\w+)\)#', $str, $param); //Array ( )

preg_match_all('#\(([a-z0-9\,]+)\)#', $str, $param); //Array ( )
 
почему тогда не работают такие варианты?
preg_match_all('#\((\w+)\)#', $str, $param); //Array ( )
preg_match_all('#\(([a-z0-9\,]+)\)#', $str, $param); //Array ( )
Потому что:
1) \w+ = a-zA-Z0-9\_ => а у тебя ещё есть запятые и пробелы в строке поиска
2) [a-z0-9\,]+ => у тебя есть пробелы в строке поиска
тебе ещё нужно добавить к регуляркам пробельные символы
Код:
1) preg_match_all('#\(([\w\s\,]+)\)#', $str, $param);
2) preg_match_all('#\(([a-z0-9\,\s]+)\)#', $str, $param);
 
Потому что:
1) \w+ = a-zA-Z0-9\_ => а у тебя ещё есть запятые и пробелы в строке поиска
2) [a-z0-9\,]+ => у тебя есть пробелы в строке поиска
тебе ещё нужно добавить к регуляркам пробельные символы
Код:
1) preg_match_all('#\(([\w\s\,]+)\)#', $str, $param);
2) preg_match_all('#\(([a-z0-9\,\s]+)\)#', $str, $param);

Ну и еще бы ui добавить, раз уж ограничения идут только маленькими буквами. А то camelCase не будет и также нужно добавить нижнее подчеркивание. Как вариант именования параметров. Главное чтоб в параметре не попались арифметические и прочие операции. Типа
Код:
func(a+b, 22,iWinner(Winter_sport))
.
 
Назад
Сверху