=\s*(.+)$/', $range, $m ) ) { return version_compare( $version, trim( $m[1] ), '>=' ); } if ( preg_match( '/^>\s*(.+)$/', $range, $m ) ) { return version_compare( $version, trim( $m[1] ), '>' ); } if ( preg_match( '/^=\s*(.+)$/', $range, $m ) ) { return version_compare( $version, trim( $m[1] ), '=' ); } if ( preg_match( '/^(\d[^\s]*?)\s*-\s*(\d[^\s]*)$/', $range, $m ) ) { $lo = trim( $m[1] ); $hi = trim( $m[2] ); return version_compare( $version, $lo, '>=' ) && version_compare( $version, $hi, '<=' ); } // Fallback: bare version string == exact match. return version_compare( $version, $range, '=' ); } public static function patched_version( $range ) { $best = ''; foreach ( explode( ',', (string) $range ) as $part ) { if ( ! preg_match( '/^<(?!=)\s*(.+)$/', trim( $part ), $m ) ) { continue; } $version = trim( $m[1] ); if ( $version === '' ) { continue; } if ( $best === '' || version_compare( $version, $best, '>' ) ) { $best = $version; } } return $best; } }