Are there any best practices for comparing version numbers in PHP?

When comparing version numbers in PHP, it's important to handle various scenarios such as comparing different number of version components, handling alphanumeric characters, and considering version prefixes like "v" or "ver". One way to compare version numbers is to split the version strings into arrays of components and compare each component sequentially.

function compareVersions($version1, $version2) {
    $version1 = explode('.', preg_replace('/[^\d.]/', '', $version1));
    $version2 = explode('.', preg_replace('/[^\d.]/', '', $version2));

    foreach(range(0, max(count($version1), count($version2)) - 1) as $i) {
        $v1 = isset($version1[$i]) ? $version1[$i] : 0;
        $v2 = isset($version2[$i]) ? $version2[$i] : 0;

        if($v1 < $v2) {
            return -1;
        } elseif($v1 > $v2) {
            return 1;
        }
    }

    return 0;
}

// Example usage
$version1 = "1.2.3";
$version2 = "1.2.4";
$result = compareVersions($version1, $version2);
if($result < 0) {
    echo "Version 1 is lower";
} elseif($result > 0) {
    echo "Version 2 is lower";
} else {
    echo "Versions are equal";
}