PHPackages                             pubconnect/isbn-urn - 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. pubconnect/isbn-urn

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

pubconnect/isbn-urn
===================

An experiment to add deeplinks/fragments to urn:isbn

0.0.4(2y ago)05MITPHPPHP &gt;=7

Since Jan 10Pushed 2y ago1 watchersCompare

[ Source](https://github.com/pubconnect/isbn-urn-php)[ Packagist](https://packagist.org/packages/pubconnect/isbn-urn)[ RSS](/packages/pubconnect-isbn-urn/feed)WikiDiscussions main Synced 1mo ago

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

Deeplinks to publications within urn: ISBN
==========================================

[](#deeplinks-to-publications-within-urn-isbn)

An experiment/draft to add readable deeplinks and fragments using the urn format. The aim is to support both 'digital' and 'physical' usecases of (book) publications.

The provided basic libraries and documentation allows to test, experience, adjust and extend its usability within various (development) environments and applications.

Please and post issues and pull requests in the [base project](https://github.com/pubconnect/isbn-urn/). Also see the extended [README](https://github.com/pubconnect/isbn-urn/) located there

Installing
----------

[](#installing)

`composer require pubconnect/isbn-urn`

Usage
-----

[](#usage)

### CREATE :: a URN string

[](#create--a-urn-string)

```
   use Pubconnect\IsbnUrn\IsbnUrn;

   $urnParser = new IsbnUrn();
   $urnParser->setNamespaceIdentifier('isbn');
   $urnParser->setNamespace('9795363916662');
   $urnParser->setTocItem('3.3.3');
   $urnParser->setOffset(10, 34);
   $urnParser->setTextFragment('de lelijke vos sprong in de bosjes');
   echo $urnParser->getUrn();
```

### UPDATE :: a existing URN string

[](#update--a-existing-urn-string)

```
   use Pubconnect\IsbnUrn\IsbnUrn;

   $urnString = "urn:isbn:9795363916662";
   $urnParser = new IsbnUrn($urnString);
   $urnParser->setTocItem('4.3.2');
   $urnParser->setOffset(0, 340);
   $urnParser->setTextFragment('de lelijke vos sprong in de bosjes');
   echo $urnParser->getUrn();
   echo PHP_EOL.PHP_EOL;
```

### PARSE :: URN strings

[](#parse--urn-strings)

```
   use Pubconnect\IsbnUrn\IsbnUrn;

   $urnStrings[] = "urn:isbn:9795363916662";
   $urnStrings[] = "urn:isbn:9795363916662?segmentnum=5";
   $urnStrings[] = "urn:isbn:9795363916662?tocitem=3.3.3";
   $urnStrings[] = "urn:isbn:9795363916662?tocitem=3.3.3#offset(150)";
   $urnStrings[] = "urn:isbn:9795363916662?tocitem=3.3.3#offset(10,34)";
   $urnStrings[] = "urn:isbn:9795363916662?tocitem=3.3.3#offset(10,34)de+lelijke+vos+sprong+in+de+bosjes";

   foreach($urnStrings as $urnString){
     $urnParser = new IsbnUrn($urnString);
     echo "URN: " . $urnParser->getUrn() . PHP_EOL;
     echo "Namespace Identifier: " . $urnParser->getNamespaceIdentifier() . PHP_EOL;
     echo "Namespace: " . $urnParser->getNamespace() . PHP_EOL;
     echo "TOC Item: " . $urnParser->getTocItem() . PHP_EOL;
     echo "Segment Number: " . $urnParser->getSegmentNum() . PHP_EOL;
     echo "Offset: ";
     echo var_export($urnParser->getOffset(), true).PHP_EOL;
     echo "Text Fragment: " . $urnParser->getTextFragment() . PHP_EOL;
     echo PHP_EOL.PHP_EOL;
   }

```

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity34

Early-stage or recently created project

 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 ~0 days

Total

3

Last Release

858d ago

PHP version history (2 changes)0.0.2PHP &gt;=8.2

0.0.4PHP &gt;=7

### Community

Maintainers

![](https://www.gravatar.com/avatar/0a0093e7ede8f9a024511ec76d29561dfe6552aa4be18bd1a3625917f567e680?d=identicon)[pubconnect](/maintainers/pubconnect)

---

Top Contributors

[![spoxies](https://avatars.githubusercontent.com/u/20624094?v=4)](https://github.com/spoxies "spoxies (1 commits)")

---

Tags

deeplinkingisbnurn

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/pubconnect-isbn-urn/health.svg)

```
[![Health](https://phpackages.com/badges/pubconnect-isbn-urn/health.svg)](https://phpackages.com/packages/pubconnect-isbn-urn)
```

###  Alternatives

[danielstjules/php-pretty-datetime

Generates human-readable strings for PHP DateTime objects

5791.9k](/packages/danielstjules-php-pretty-datetime)[magepal/magento2-customeraccountlinksmanager

Customer Account Links Manager for Magento2 allows you to quickly and easily remove unwanted links from customer account dashboard

4084.9k](/packages/magepal-magento2-customeraccountlinksmanager)[nystudio107/craft3-multi-environment

Efficient and flexible multi-environment config for Craft 3 CMS

7218.3k5](/packages/nystudio107-craft3-multi-environment)[xi/collections

Functional, immutable and extensible enumerations and collections for PHP 5.3.

26100.6k1](/packages/xi-collections)[psalm/attributes

A collection of PHP 8 Attributes that Psalm can understand

19120.0k2](/packages/psalm-attributes)[kolirt/laravel-openstreetmap

Package for openstreetmap.org

2332.5k](/packages/kolirt-laravel-openstreetmap)

PHPackages © 2026

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