- $retval = [];
- $exploded = explode( '|', $modules );
- foreach ( $exploded as $group ) {
- if ( strpos( $group, ',' ) === false ) {
- // This is not a set of modules in foo.bar,baz notation
- // but a single module
- $retval[] = $group;
- } else {
- // This is a set of modules in foo.bar,baz notation
- $pos = strrpos( $group, '.' );
- if ( $pos === false ) {
- // Prefixless modules, i.e. without dots
- $retval = array_merge( $retval, explode( ',', $group ) );
- } else {
- // We have a prefix and a bunch of suffixes
- $prefix = substr( $group, 0, $pos ); // 'foo'
- $suffixes = explode( ',', substr( $group, $pos + 1 ) ); // [ 'bar', 'baz' ]
- foreach ( $suffixes as $suffix ) {
- $retval[] = "$prefix.$suffix";
- }
- }
- }
- }
- return $retval;