News

Twine: String Manipulation, Leveled Up

Published
Twine: String Manipulation, Leveled Up image

Twine is a stand-alone PHP 7 package by Chris Kankiewicz for string manipulation and comparison with an expressive fluid syntax.

Here’s the basic usage and some examples of transformation methods:

use PHLAK\Twine;
 
$string = new Twine\Str('john pinkerton');
 
$string->substring(5, 4); // Returns 'pink'
$string->pad(20, '_'); // Returns 'john pinkerton______'
$string->pad(20, '_', Twine\Config\Pad::LEFT); // Returns '______john pinkerton'
$string->pad(20, '_', Twine\Config\Pad::BOTH); // Returns '___john pinkerton___'
 
// Aliases
$string->padLeft(20, '_');
$string->padRight(20, '_');
$string->padBoth(20, '_');

Converting to uppercase provides you with some different options, such as the whole string, the first character, and the first character of every word:

$string = new Twine\Str('john pinkerton');
 
// Uppercase
$string->uppercase(); // Returns 'JOHN PINKERTON'
$string->uppercase(Twine\Config\Uppercase::FIRST); // Returns 'John pinkerton'
$string->uppercase(Twine\Config\Uppercase::WORDS); // Returns 'John Pinkerton'
 
// Aliases for first and words
$string->uppercaseFirst();
$string->uppercaseWords();

Twine provides various comparison methods to verify a string in a variety of ways:

<br></br>$string = new Twine\Str('john pinkerton');
 
$string->startsWith('pink'); // false
$string->endsWith('ton'); // true
$string->contains('pin'); // true
 
$string->equals('JoHN PiNKeRToN', Twine\Config\Equals::CASE_INSENSITIVE); // Returns true
// Alias
$string->insensitiveMatch('JoHN PiNKeRToN'); // true

You can encode a string instance with the base64() method and also generate various hashes:

$string = new Twine\Str('john pinkerton');
 
$string->base64(); // Returns 'am9obiBwaW5rZXJ0b24='
$string->md5(); // Returns '30cac4703a16a2201ec5cafbd600d803'
$string->sha1(); // Returns 'fcaf28c7705ba8f267472bb5aa8ad883f6bf0427'
$string->sha256(); // Returns '7434f26c8c2fc83e57347feb2dfb235c2f47b149b54b80692beca9d565159dfd'

The format() method is really neat looking, and allows you to create multiple strings from the same formatted text:

$string = new Twine\Str('Hello %s! Welcome to %s, population %b.');
 
$string->format('John', 'Pinkertown', 1337);
// Returns 'Hello John! Welcome to Pinkertown, population 10100111001.'

Another cool trick with this library is chaining methods and even doing assertions after chaining:

$string = new Twine\Str('john pinkerton');
 
$string->substring(5, 4)->equals('pink'); // Returns true

Learn More

There are a ton of string methods in this library, and I’d encourage you to check out the GitHub repo for the complete API found in the readme file. You can install it via composer at phlak/twine.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Filed in

Sponsored

acquaintsoft logo
Acquaint Softtech

Hire Laravel developers with AI expertise at $20/hr. Get started in 48 hours.

Visit Acquaint Softtech

The latest

View all →
Statamic Mailables Viewer Previews Laravel Emails in the Control Panel image

Statamic Mailables Viewer Previews Laravel Emails in the Control Panel

Read article
Laravel Tackle: Run an AI Coding Agent in Your Laravel App image

Laravel Tackle: Run an AI Coding Agent in Your Laravel App

Read article
Queue::forward(): Reroute Laravel Queues in One Place image

Queue::forward(): Reroute Laravel Queues in One Place

Read article
Laravel Read-Through Filesystem: Lazy Storage Migration image

Laravel Read-Through Filesystem: Lazy Storage Migration

Read article
Read-Through Disks and Debounced Listeners in Laravel 13.26 image

Read-Through Disks and Debounced Listeners in Laravel 13.26

Read article
Lerd: A Free, Open Source Herd Alternative for Linux and macOS image

Lerd: A Free, Open Source Herd Alternative for Linux and macOS

Read article