Looking for maintainers, I no longer do much if any PHP dev, I have moved on, mostly work in dotnet core, node.js & golang these days. If anyone is keen to take over these projects, get in touch - brad@bjc.id.au
An object oriented way to work with strings in PHP, with multibyte support baked in.
The original library https://github.com/danielstjules/Stringy The voku fork https://github.com/voku/Stringy
This version builds on voku's work. The main aim was to make the management of the code base easier by splitting the mountain of methods that make up the Stringy class into traits.
This does mean we have bumped the minimum PHP version to 5.4+
NOTE: There are also a few other changes, this is not an API compatible fork.
Installation via composer is easy:
composer require gears/string
Then import the Str
class into your script:
use Gears\String\Str;
The library offers OO method chaining, as seen below:
echo Str::s('fòô bàř')->removeWhitespace()->swapCase(); // 'FÒÔ BÀŘ'
Gears\String\Str
has a __toString()
method, which returns the current string
when the object is used in a string context, ie: (string) Str::s('foo')
Gears\String\Str
implements the IteratorAggregate
interface, meaning that
foreach
can be used with an instance of the class:
$str = Str::s('fòôbàř');
foreach ($str as $char) {
echo $char;
}
// 'fòôbàř'
It implements the Countable
interface, enabling the use of count()
to
retrieve the number of characters in the string:
$str = Str::s('fòô');
count($str); // 3
Furthermore, the ArrayAccess
interface has been implemented. As a result,
isset()
can be used to check if a character at a specific index exists. And
since Gears\String\Str
is immutable, any call to offsetSet
or offsetUnset
will throw an exception. offsetGet
has been implemented, however, and accepts
both positive and negative indexes. Invalid indexes result in an
OutOfBoundsException
.
$str = Str::s('bàř');
echo $str[2]; // 'ř'
echo $str[-2]; // 'à'
isset($str[-4]); // false
$str[3]; // OutOfBoundsException
$str[2] = 'a'; // Exception
All methods are documented with PSR-5 docblocks that provide autocomplete hints to any decent IDE such as PHP Storm or Atom with atom-autocomplete-php.
Developed by Brad Jones - brad@bjc.id.au