Как извлечь аргументы из функции и сгруппировать их по типу, int, строке или массивуPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как извлечь аргументы из функции и сгруппировать их по типу, int, строке или массиву

Сообщение Anonymous »

Есть ли способ извлечь аргумент функции и сгруппировать их по типу: int, string или массив из подстроки с регулярным выражением в PHP?
Мне нужно найти все аргументы типа строку и ставьте перед ними знак доллара.
До сих пор я пробовал этот шаблон, но мне не удалось решить проблему:

Код: Выделить всё

$re = '/(?\w+)\((?.\w+|\d+)|(?\[[^][]*])\)/';
$str = '
{{ labels(1, ["Jonh", "Doe"]) }}
{{ unescape(one, two, three) }}
{{ trans("welcome", ["Jane", "Doe"]) }}
';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

// Output
array (
0 => array (
0 => 'unescape(one',
'func' => 'unescape',
1 => 'unescape',
'arg' => 'one',
2 => 'one',
),
1 => array (
0 => 'labels(1',
'func' => 'labels',
1 => 'labels',
'arg' => '1',
2 => '1',
),
2 => array (
0 => '["Jane", "Doe"])',
'func' => '',
1 => '',
'arg' => '',
2 => '',
'arr' => '["Jane", "Doe"]',
3 => '["Jane", "Doe"]',
),
)
Что мне нужно

Код: Выделить всё

array (
0 => array (
0 => 'escape(one, two, three)',
'func' => 'unescape',
'arg' => 'one', 'two', 'three',
'str' => 'one', 'two', 'three'
),
1 =>  array (
0 => 'labels(1, "id", ["Jonh", "Doe"])',
'func' => 'labels',
'arg' => '1', 'id', ["Jonh", "Doe"],
'int' => 1,
'str' => 'id',
'arr' => ["John", "Doe"]
),
2 => array (
0 => 'trans("welcome", ["Jane", "Doe"])',
'func' => 'trans',
'arg' => '"welcome", ["Jane", "Doe"]',
'str' => 'welcome',
'arr' => '["Jane", "Doe"]'
),
)
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -string-or
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»