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 2w 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

18

—

LowBetter than 8% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity37

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

[mck89/peast

Peast is PHP library that generates AST for JavaScript code

19037.7M41](/packages/mck89-peast)[sauladam/shipment-tracker

Parses tracking information for several carriers, like UPS, USPS, DHL and GLS by simply scraping the data. No need for any kind of API access.

9642.0k](/packages/sauladam-shipment-tracker)[jstewmc/rtf

Read and write Rich Text Format (RTF) documents with PHP

46143.1k6](/packages/jstewmc-rtf)[moonshine/layouts-field

Field for repeating groups of fields for MoonShine

107.9k](/packages/moonshine-layouts-field)[tcds-io/php-jackson

A lightweight, flexible object serializer for PHP, inspired by FasterXML/jackson

112.9k10](/packages/tcds-io-php-jackson)

PHPackages © 2026

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