PHPackages                             brunorb/semverphp - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. brunorb/semverphp

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

brunorb/semverphp
=================

Semantic Versioning 2.0.0 utility library

1.0.2(7y ago)0279MITPHPPHP &gt;=7.0.0

Since Oct 28Pushed 7y ago1 watchersCompare

[ Source](https://github.com/BrunoRB/semverphp)[ Packagist](https://packagist.org/packages/brunorb/semverphp)[ Docs](https://github.com/BrunoRB/semverphp)[ RSS](/packages/brunorb-semverphp/feed)WikiDiscussions master Synced 4d ago

READMEChangelogDependencies (1)Versions (4)Used By (0)

SemverPHP
=========

[](#semverphp)

Semantic Versioning 2.0.0 utility library:

- Comparison
- Validation
- Split

Installing / Running
--------------------

[](#installing--running)

```
composer require brunorb/semverphp
use BrunoRB\SemverPHP;

```

API
---

[](#api)

### isValid(*semver*) -&gt; bool

[](#isvalidsemver---bool)

```
$v1 = '1.2.0-alpha+001';
$v2 = '1.2.1';
SemverPHP::isValid($v1); // true
SemverPHP::isValid($v2); // true
SemverPHP::isValid('1.1'); // false

```

### split(*semver*) -&gt; array

[](#splitsemver---array)

```
$v1 = '1.2.0-alpha+001';
$v2 = '1.2.1+001';

SemverPHP::split($v1); // [major: '1', minor: '2', patch: '0', preRelease: 'alpha', 'buildMetadata': '001']
SemverPHP::split($v2); // [major: '1', minor: '2', patch: '1', preRelease: null, buildMetadata: '001']

```

### compare(*semver1*, *semver2*) -&gt; int

[](#comparesemver1-semver2---int)

```
$v1 = '1.2.0-alpha+001';
$v2 = '1.2.1';

SemverPHP::compare($v1, $v2); // -1
SemverPHP::compare($v2, $v1); // 1
SemverPHP::compare($v1, $v1); // 0

```

### PATTERN -&gt; string

[](#pattern---string)

```
preg_match(SemverPHP::PATTERN, 'semver');
preg_replace(SemverPHP::PATTERN, 'semver');
... other regex methods

```

Tests
-----

[](#tests)

[tests/BasicTest.php](tests/BasicTest.php)

`composer run-script test`

License
-------

[](#license)

[The MIT License](LICENSE)

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~9 days

Total

3

Last Release

2739d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/643a18208b83f2ff49498ffa6e9508cc2057e08a3e676606819716998d571d7a?d=identicon)[BrunoRB](/maintainers/BrunoRB)

---

Top Contributors

[![BrunoRB](https://avatars.githubusercontent.com/u/4399182?v=4)](https://github.com/BrunoRB "BrunoRB (5 commits)")

---

Tags

semversemantic versioning

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/brunorb-semverphp/health.svg)

```
[![Health](https://phpackages.com/badges/brunorb-semverphp/health.svg)](https://phpackages.com/packages/brunorb-semverphp)
```

###  Alternatives

[tomzx/php-semver-checker

PHP Semantic Versioning Checker

434232.8k2](/packages/tomzx-php-semver-checker)[nikolaposa/version

Value Object that represents a SemVer-compliant version number.

1406.4M16](/packages/nikolaposa-version)[liip/rmt

Release Management Tool: a handy tool to help releasing new version of your software

457448.7k74](/packages/liip-rmt)[shivas/versioning-bundle

Symfony application versioning, simple console command to manage version (with providers e.g. git tag) of your application using Semantic Versioning 2.0.0 recommendations

1121.2M1](/packages/shivas-versioning-bundle)[naneau/semver

A decent, standards-compliant, Semantic Versioning (SemVer) parser and library

72496.2k13](/packages/naneau-semver)[jelix/version

Parse any version syntax, including semantic version. Compare version, using Composer version constraints syntax.

13193.0k4](/packages/jelix-version)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
