$plugins_array = array(); if (preg_match_all('/(<gap:plugin [^>]+)(\\/>|>(.*)<\\/gap:plugin>)/sU', $plugins_xml, $matches)) { foreach ($matches[1] as $i => $match) { $name = ''; $version = ''; $source = ''; if (preg_match('/name="([^"]+)"/', $match, $name_match) && strlen($name_match[1]) > 0) { if (preg_match('/version="([^"]+)"/', $match, $version_match) && strlen($version_match[1]) > 0) { $version = $version_match[1]; } if (preg_match('/source="([^"]+)"/', $match, $source_match) && strlen($source_match[1]) > 0) { $source = $source_match[1]; } // Include params if any $params = array(); if (!empty($matches[3][$i]) && preg_match_all('/<param ([^>]+)>/U', $matches[3][$i], $param_matches)) { foreach ($param_matches[1] as $param_match) { if (preg_match('/name="([^"]+)"/', $param_match, $param_name_match) && strlen($param_name_match[1]) > 0 && preg_match('/value="([^"]+)"/', $param_match, $param_value_match) && strlen($param_value_match[1]) > 0) { $params[$param_name_match[1]] = array('name' => $param_name_match[1], 'value' => $param_value_match[1]); } } } $plugins_array[$name_match[1]] = array('version' => $version, 'source' => $source, 'params' => array_values($params)); } } } return $plugins_array; } } WpakApps::hooks();