PHPackages                             sashabo/iterable-string - 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. sashabo/iterable-string

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

sashabo/iterable-string
=======================

IterableString and MultibyteIterableString allow to iterate string characters in foreach without converting the string into array.

1.1(2y ago)14.0kGPL-3.0-onlyPHPPHP &gt;=8.1

Since Oct 21Pushed 2y ago1 watchersCompare

[ Source](https://github.com/sasha-bo/iterable-string)[ Packagist](https://packagist.org/packages/sashabo/iterable-string)[ RSS](/packages/sashabo-iterable-string/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

iterable-string
===============

[](#iterable-string)

PHP library which allow to iterate string characters in foreach without converting the string into array.

### IterableString

[](#iterablestring)

```
foreach (new IterableString('lorem ipsum') as $position => $char) {
    echo $position.'['.$char.'] ';
}
```

or

```
$iterableString = new IterableString('lorem ipsum');
while ($iterableString->valid()) {
    echo $iterableString->key().'['.$iterableString->current().'] ';
    $iterableString->next();
}
```

prints `0[l] 1[o] 2[r] 3[e] 4[m] 5[ ] 6[i] 7[p] 8[s] 9[u] 10[m]`

### MultibyteIterableString

[](#multibyteiterablestring)

Does the same, but uses mb\_\* functions, so works with UTF-8 correctly.

```
foreach (new MultibyteIterableString('visgaršīgākie āboli Rīgā') as $position => $char) {
    echo $position.'['.$char.'] ';
}
```

prints `0[v] 1[i] 2[s] 3[g] 4[a] 5[r] 6[š] 7[ī] 8[g] 9[ā] 10[k] 11[i] 12[e] 13[ ] 14[ā] 15[b] 16[o] 17[l] 18[i] 19[ ] 20[R] 21[ī] 22[g] 23[ā]`

### Methods

[](#methods)

`rewind(): void` - sets position to 0 (is called automatically when foreach starts)

`current(int $length = 1): string` - current character

`next(int $steps = 1): void` - increments the position

`previous(int $steps = 1): void` - decrements the position

`key(): int` - current position

`valid(): bool` - the current position is not less than 0 and not more than source string length

`check(int $position): bool` - the same for any position

`isLast(): bool` - true if current character is the last in source string

`length(): int` - the length of the source string (strlen or mb\_strlen)

`set(int $position): void` - sets the position

`get(int $position, int $length = 1): string` - returns a character or few

### Installation

[](#installation)

`composer require sashabo/iterable-string`

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 85.7% 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

Unknown

Total

1

Last Release

940d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5369c71152f0feb0c57d12044c87c7f8be9c4640586b042629a6c50638d4e2e8?d=identicon)[sashabo](/maintainers/sashabo)

---

Top Contributors

[![xbndrv](https://avatars.githubusercontent.com/u/151878218?v=4)](https://github.com/xbndrv "xbndrv (6 commits)")[![sasha-bo](https://avatars.githubusercontent.com/u/146867796?v=4)](https://github.com/sasha-bo "sasha-bo (1 commits)")

### Embed Badge

![Health badge](/badges/sashabo-iterable-string/health.svg)

```
[![Health](https://phpackages.com/badges/sashabo-iterable-string/health.svg)](https://phpackages.com/packages/sashabo-iterable-string)
```

###  Alternatives

[spomky-labs/cbor-php

CBOR Encoder/Decoder for PHP

596.4M30](/packages/spomky-labs-cbor-php)[arbermustafa/filament-locationpickr-field

Location picker field for Filament Php using Google Maps

1539.0k](/packages/arbermustafa-filament-locationpickr-field)

PHPackages © 2026

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