Форум → Программирование → PHP для идиотов → Хочу: реулярку для добывания обращений к функциям
Хочу: реулярку для добывания обращений к функциям
Страницы: ← Следующая страница →
-
Март 30, 2010, 12:48 д.п., спустя 21 минуту 47 секунд
Any valid PHP code may appear inside a function, even other functions and class definitions.
Function names follow the same rules as other labels in PHP. A valid function name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*.Спустя 22 сек.к этому я бы добавил \s*\(
и все :)Сапожник без сапог -
Март 30, 2010, 12:53 д.п., спустя 5 минут 7 секунд
нюню. из разбора требуется исключить содержимое строк.ιιlllιlllι унц-унц -
Март 30, 2010, 1:16 д.п., спустя 22 минуты 22 секунды
тогда очевидно тчо не регуляркой надо делать а именно синтаксический разбор
нюню. из разбора требуется исключить содержимое строк.Сапожник без сапог -
Март 30, 2010, 9 д.п., спустя 7 часов 44 минуты 24 секунды
<?php
function parse($input)
{
// удаляем все эскейп последовательности
$input = preg_replace('/\\./s', '', $input);
// удаляем строки в одинарных и двойных кавычках
$input = preg_replace('/\'[^\']+\'/s', '', $input);
$input = preg_replace('/\"[^\"]+\"/s', '', $input);
// выделяем вызов функций в строке
$answ = array();
if (preg_match_all('/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+)\s*\(/s', $input, $pockets))
{
for ($i = 0; $i < count($pockets[1]); $i++)
{
$answ[] = $pockets[1][$i];
}
}
return $answ;
}
$str = '$a = func1 ("oeee", \'oeee()\');
$b = "oeee" + func2();
$c = "\" ksdljflsdjf \" sdkljfsdkljf \\\' klsdjfl(sdfsdf, \"sdfds\")";
$d = Test::factory();
$e = recur(recur(recur()));';
var_dump(parse($str));
/* Result:
array(6) {
[0]=>
string(5) "func1"
[1]=>
string(5) "func2"
[2]=>
string(7) "factory"
[3]=>
string(5) "recur"
[4]=>
string(5) "recur"
[5]=>
string(5) "recur"
} */
В принципе работает, но не определяет объявелние функции, класс статичного метода, объект, метод которого вызывается и тпСпустя 87 сек.а ну да, и кавычки в строке должны быть расставлены верно, иначе работаь не будет )Work, buy, consume, die -
Март 30, 2010, 9:04 д.п., спустя 4 минуты 19 секунд
Naaayh, поставь свой умывальник вместо аватарки, все крутые перцы ебел не скрывают))Сапожник без сапог -
-
Март 30, 2010, 9:24 д.п., спустя 3 минуты 35 секунд
сейчас на тебя заклятие сокрытия наложу - бан =))
йа скрываюсь!Сапожник без сапог -
Март 30, 2010, 9:51 д.п., спустя 27 минут 41 секунду
Naaayh, да, покажи личико.
(дуд моё хлебало видел, если чо)ιιlllιlllι унц-унц -
Март 30, 2010, 11:55 д.п., спустя 2 часа 3 минуты 36 секунд
да ёмана, что за домогательства, я анонимус, у меня нет лица!Work, buy, consume, die -
-
-
Март 31, 2010, 2 п.п., спустя 15 часов 43 минуты 33 секунды
это что новый вид рефлексии?
token_get_all() -
Март 31, 2010, 5:38 п.п., спустя 3 часа 37 минут 32 секунды
Да нет, это старый способ разбиения php-кода на токены ) -
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!