PHPackages                             hegland/text-parser - 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. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. hegland/text-parser

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

hegland/text-parser
===================

A Text parser. It allows you to cut out the needed part of a text from a given text.

v3.0.2(1mo ago)22.5k↑66.7%MITPHPPHP ^8.1CI passing

Since Jun 6Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/rogerhegland/text-parser)[ Packagist](https://packagist.org/packages/hegland/text-parser)[ Docs](https://github.com/rogerhegland/text-parser)[ RSS](/packages/hegland-text-parser/feed)WikiDiscussions master Synced yesterday

READMEChangelog (7)Dependencies (3)Versions (11)Used By (0)

text-parser
===========

[](#text-parser)

It allows you to cut the needed part of a text in given text

examples
--------

[](#examples)

### Find one

[](#find-one)

```

				company
				urls
				zipcode & city

				Hegland GmbH

				        http://www.companylink1.ch
				        http://www.companylink2.ch
				        http://www.companylink3.ch

				8400 Winterthur

http://www.link1.ch
http://www.link2.ch
http://www.link3.ch

           ^^^^^^

				name
				street
				zipcode & city

		^^^^^^^

				Roger Hegland
				^^^^=============^^^^^
				Châtelstrasse 13
				8355 Aadorf

```

In the following example we get the name "Roger Hegland":

```
$name = Parser::findOne($text, '"id2">', '', '', '');

/*
result = (string) 'Roger Hegland'
*/
```

### Find one backwards

[](#find-one-backwards)

Use `findOneBackwards()` when you know the text on the right side and want to search backwards for the left boundary. The first search text is the right anchor. Each following search text is searched backwards from the start of the current match.

```
$text = '
    let settings = [{value:"6.0",label:"Zimmer"},{value:"125",label:"Wohnflaeche"},{value:"2025",label:"Baujahr"}];
';

$rooms = Parser::findOneBackwards($text, '",label:"Zimmer"', '"');

/*
result = (string) '6.0'
*/
```

`bFindOne()` is available as a short alias for `findOneBackwards()`.

### Aliases

[](#aliases)

The descriptive method names are the primary API. Short aliases are available for compact parser calls:

```
Parser::fO($text, '', ''); // findOne()
Parser::fM($text, '', '', '">'); // findMany()
Parser::bfO($text, '",label:"Zimmer"', '"'); // findOneBackwards()
```

### Find many

[](#find-many)

Please notice, that the first parameter is used for the end search.

In the following example we get all link names:

```

				company
				urls
				zipcode & city

				Hegland GmbH

				        companylink1
				        ^^^^                                   ^^============^^^^
				        companylink2
				        ^^^^                                   ^^============^^^^
				        companylink3
				        ^^^^                                   ^^============^^^^

				8400 Winterthur

link1
^^^^                            ^^=====^^^^
link2
^^^^                            ^^=====^^^^
link3
^^^^                            ^^=====^^^^

				name
				street
				zipcode & city

				Roger Hegland
				Châtelstrasse 13
				8355 Aadorf

```

```
Parser::findMany($text, '', '', '">' );

/*
result = array
[
    'companylink1',
    'companylink2',
    'companylink3',
    'link1',
    'link2',
    'link3'
]
*/
```

If you only need the link names in the table you can do something like this:

```

				company
				urls
				zipcode & city

				Hegland GmbH

				        companylink1
				        ^^^^                                   ^^============^^^^
				        companylink2
				        ^^^^                                   ^^============^^^^
				        companylink3
				        ^^^^                                   ^^============^^^^

				8400 Winterthur

link1
link2
link3

				name
				street
				zipcode & city

				Roger Hegland
				Châtelstrasse 13
				8355 Aadorf

```

```
$text = Parser::findOne($text, '', '' );
Parser::findMany($text, '', '', '">' );

/*
result = array
[
    'companylink1',
    'companylink2',
    'companylink3',
]
*/
```

###  Health Score

54

—

FairBetter than 96% of packages

Maintenance92

Actively maintained with recent releases

Popularity23

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity78

Established project with proven stability

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

Recently: every ~826 days

Total

10

Last Release

40d ago

Major Versions

1.0.6 → 2.0.02017-05-08

2.0.1 → v3.0.02026-05-06

PHP version history (3 changes)1.0.0PHP &gt;=5.6

1.0.3PHP &gt;=7.0

v3.0.0PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/393c898cfe774fe2e62be217b533ffa405989c7154bca2f68a2f8b21f1124250?d=identicon)[rogerhegland](/maintainers/rogerhegland)

---

Top Contributors

[![rogerhegland](https://avatars.githubusercontent.com/u/10993943?v=4)](https://github.com/rogerhegland "rogerhegland (29 commits)")

---

Tags

parser

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/hegland-text-parser/health.svg)

```
[![Health](https://phpackages.com/badges/hegland-text-parser/health.svg)](https://phpackages.com/packages/hegland-text-parser)
```

###  Alternatives

[nikic/php-parser

A PHP parser written in PHP

17.4k954.1M2.5k](/packages/nikic-php-parser)[doctrine/lexer

PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.

11.2k959.8M160](/packages/doctrine-lexer)[erusev/parsedown

Parser for Markdown.

15.1k156.8M870](/packages/erusev-parsedown)[league/commonmark

Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)

3.0k437.5M1.0k](/packages/league-commonmark)[masterminds/html5

An HTML5 parser and serializer.

1.8k269.7M322](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k211.0M75](/packages/sabberworm-php-css-parser)

PHPackages © 2026

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