PHPackages                             gechanted/read-until - 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. gechanted/read-until

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

gechanted/read-until
====================

Two Simple Reader for exploding with multiple delimiters, great for parsing

03PHP

Since Aug 6Pushed 6y ago1 watchersCompare

[ Source](https://github.com/gechanted/PHPReadUntil)[ Packagist](https://packagist.org/packages/gechanted/read-until)[ RSS](/packages/gechanted-read-until/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependenciesVersions (1)Used By (0)

This Component searches the through the text until a delimiter is found and returns the searched text until the delimiter and the delimiter. Then you can change the delimiters, and search through the next part or get the rest of of the text back

Installation

Usage $string = 'This is a test-string ... hi';

$stringReader = new ReadUntil\\StringReader($string); $firstResult = $stringReader-&gt;readUntil(\['-', 'ing'\]); echo "string '". $firstResult-&gt;getText() ."' extracted by the delimiter '". $firstResult-&gt;getDelimiter(). "'" . PHP\_EOL;

while (true) { $result = $stringReader-&gt;readUntil(\['.', 'i', 'ing'\]); echo "string '". $result-&gt;getText() ."' extracted by the delimiter '". $result-&gt;getDelimiter(). "'" . PHP\_EOL; if ( $result-&gt;getDelimiter() === '') { break; } }

output:

string 'This is a test' extracted by the delimiter '-' string 'str' extracted by the delimiter 'i' string 'ng ' extracted by the delimiter '.' string '' extracted by the delimiter '.' string '' extracted by the delimiter '.' string ' h' extracted by the delimiter 'i' string '' extracted by the delimiter ''

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/c072cbe83746d5162266ecb3a379151a38090c2cbd46174facbe986455bff767?d=identicon)[gechanted](/maintainers/gechanted)

### Embed Badge

![Health badge](/badges/gechanted-read-until/health.svg)

```
[![Health](https://phpackages.com/badges/gechanted-read-until/health.svg)](https://phpackages.com/packages/gechanted-read-until)
```

###  Alternatives

[mtdowling/jmespath.php

Declaratively specify how to extract elements from a JSON document

2.0k472.8M135](/packages/mtdowling-jmespathphp)[opis/closure

A library that can be used to serialize closures (anonymous functions) and arbitrary data.

2.6k230.0M284](/packages/opis-closure)[masterminds/html5

An HTML5 parser and serializer.

1.8k242.8M229](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k191.2M65](/packages/sabberworm-php-css-parser)[michelf/php-markdown

PHP Markdown

3.5k52.4M345](/packages/michelf-php-markdown)[jms/metadata

Class/method/property metadata management in PHP

1.8k152.8M88](/packages/jms-metadata)

PHPackages © 2026

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