в файле есть кусок кода который мне надо выцепить.. PHP: $template->assign(array( 'PL_NAME' => $info['Name'], 'PL_FOLDER' => $pl, 'PL_CONFIG_COUNT' => ($totalconfig > 0 ) ? $totalconfig : false, 'PL_URL' => 'index.php?admin=config&n=edit&o=plugins&p='.$pl, 'PL_DESCRIPTION' => (isset($info['Description'])) ? $info['Description'] : false, 'PL_VERSION' => (isset($info['Version'])) ? $info['Version'] : false, 'PL_DATE' => (isset($info['Date'])) ? $info['Date'] : false, 'PL_AUTHOR' => (isset($info['Author'])) ? $info['Author'] : false, 'PL_COPYRIGHT' => (isset($info['Copyright'])) ? $info['Copyright'] : false, 'PL_COUNT_PART' => count($parts), )); цепляю так PHP: preg_match_all('#\$template\s*->\s*assign\s*\(\s*array\s*\((.+\s*=>\s*.+)\)\s*\)\s*;#Uis', $plugin_file_code, $assign_vars); на выходе получаю PHP: Array ( [0] => 'PL_NAME' => $info['Name'], 'PL_FOLDER' => $pl, 'PL_CONFIG_COUNT' => ($totalconfig > 0 ) ? $totalconfig : false, 'PL_URL' => 'index.php?admin=config&n=edit&o=plugins&p='.$pl, 'PL_DESCRIPTION' => (isset($info['Description'])) ? $info['Description'] : false, 'PL_VERSION' => (isset($info['Version'])) ? $info['Version'] : false, 'PL_DATE' => (isset($info['Date'])) ? $info['Date'] : false, 'PL_AUTHOR' => (isset($info['Author'])) ? $info['Author'] : false, 'PL_COPYRIGHT' => (isset($info['Copyright'])) ? $info['Copyright'] : false, 'PL_COUNT_PART' => count($parts), ) по идее меня интересуют тока ключи массива.. можно ли при помощи 1 регулярки получить все ключи в виде PHP: Array ( [0] => PL_NAME [1] => PL_FOLDER [2] => PL_CONFIG_COUNT [3] => PL_URL [4] => PL_DESCRIPTION [5] => PL_VERSION [6] => PL_DATE [7] => PL_AUTHOR [8] => PL_COPYRIGHT [9] => PL_COUNT_PART )
Выделенный топик для регулярок - не интересно, надо обязательно засрать форум новыми темами. PHP: preg_match_all("~'([^']+)' =\>~i",$in,$out); print_r($out);
насчет топа тупанул.. бывает) MuXaJIbI4 а тебя не смущает что PHP: 'PL_NAME' => $info['Name'], 'PL_FOLDER' => $pl, 'PL_CONFIG_COUNT' => ($totalconfig > 0 ) ? $totalconfig : false, 'PL_URL' => 'index.php?admin=config&n=edit&o=plugins&p='.$pl, 'PL_DESCRIPTION' => (isset($info['Description'])) ? $info['Description'] : false, 'PL_VERSION' => (isset($info['Version'])) ? $info['Version'] : false, 'PL_DATE' => (isset($info['Date'])) ? $info['Date'] : false, 'PL_AUTHOR' => (isset($info['Author'])) ? $info['Author'] : false, 'PL_COPYRIGHT' => (isset($info['Copyright'])) ? $info['Copyright'] : false, 'PL_COUNT_PART' => count($parts), строка... Gifts, твоя регулярка вытянет ещё кучу мусора который мне не нужен.. мне надо тянуть только то что между $template->assign(array(.........)); PS: решил проблему при помощи preg_replace и eval... но всеже интересно можно ли это сделать 1 махом не юзая eval
Одной не получится PHP: preg_match('~$template-\>assign\((.+?)\);~msi',$in,$tmp); preg_match_all("~'([^']+)' =\>~i",$tmp[1],$out); print_r($out);
А вот это как вариант одной регуляркой PHP: $plugin_file_code='$template->assign(array( \'PL_NAME\' => $info[\'Name\'], \'PL_FOLDER\' => $pl, \'PL_CONFIG_COUNT\' => ($totalconfig > 0 ) ? $totalconfig : false, \'PL_URL\' => \'index.php?admin=config&n=edit&o=plugins&p=\'.$pl, \'PL_DESCRIPTION\' => (isset($info[\'Description\'])) ? $info[\'Description\'] : false, \'PL_VERSION\' => (isset($info[\'Version\'])) ? $info[\'Version\'] : false, \'PL_DATE\' => (isset($info[\'Date\'])) ? $info[\'Date\'] : false, \'PL_AUTHOR\' => (isset($info[\'Author\'])) ? $info[\'Author\'] : false, \'PL_COPYRIGHT\' => (isset($info[\'Copyright\'])) ? $info[\'Copyright\'] : false, \'PL_COUNT_PART\' => count($parts), ));'; preg_match_all('#PL_[A-Z_]+?#Uis', $plugin_file_code, $assign_vars); echo '<pre>'; print_r ($assign_vars);