originphp/text

OriginPHP Text


Keywords
text, string, merge, originPHP, tokenzie
License
MIT

Documentation

Text

license build coverage

The Text utility has a number of methods to help when working with strings.

Installation

To install this package

$ composer require originphp/text

Converting Strings to Ascii

To convert a string into Ascii (Transliterate)

$ascii = Text::toAscii('Ragnarr Loðbrók'); // Ragnarr Lodbrok

Creating a Slug

To create a URL safe slug. The string will be converted to ASCII then any unkown characters will be replaced with the separator.

$slug = Text::slug('Who is Ragnarr Loðbrók?'); // who-is-ragnarr-lodbrok

Contains

To check if a string contains a substring.

$result = Text::contains('foo','What is foo bar'); // true

Getting parts of strings

When you need to get part of a string before or after a substring

$result = Text::left('foo','What is foo bar'); // 'What is '
$result = Text::right('foo','What is foo bar'); //' bar'

Checking the start and end of a string

$bool = Text::startsWith('What','What is foo bar'); // true
$bool = Text::endsWith('bar','What is foo bar'); // true

Replace

To replace a substring with another string

$result = Text::replace('foo','***','What is foo bar'); // 'What is *** bar'
$result = Text::replace('foo','***','What is FOO bar',['insensitive'=>true]); // 'What is *** bar'

Insert

To insert values into a string using placeholders (string interpolation)

$string = Text::insert('Record {id} has been updated',[
    'id'=>1234568
    ]); // Record 1234568 has been updated

Another example:

$letter = file_get_contents('/directory/some-file');
$string = Text::insert($letter,[
    'salutation' => 'Mr.',
    'first_name' => 'Tony',
    'last_name' => 'Robbins',
    'address_1' => '100 Santa Monica Road',
    ]);

You can also change the place holders

$string = Text::insert('Record :id has been updated',[
    'id'=>1234568,'before'=>':','after'=>''
    ]); // Record 1234568 has been updated

Tokenize

For quick and easy parsing of strings, the Tokenize method makes things simple. By default tokenize splits strings using a comma , and quotation mark " as an enclosure.

$string = '2019-07-10 13:30:00 192.168.1.22 "GET /users/login HTTP/1.0" 200 1024';
$result = Text::tokenize($string,['separator'=>' ']);

/*
// Will give you this
[
    '2019-07-10',
    '13:30:00',
    '192.168.1.22',
    'GET /users/login HTTP/1.0',
    '200',
    '1024'
];
*/

You can also supply keys instead which will be mapped.

$string = '2019-07-10 13:30:00 192.168.1.22 "GET /users/login HTTP/1.0" 200 1024';
$result = Text::tokenize($string,[
    'separator'=>' ',
    'keys'=>['date','time','ip','request','code','bytes']
]);

/*
// Will give you this
[
    'date'=>'2019-07-10',
    'time'=>'13:30:00',
    'ip' => '192.168.1.22',
    'request' =>'GET /users/login HTTP/1.0',
    'code'=>'200',
    'bytes'=>'1024'
];
*/

Truncate

To truncate a string if it is longer than a specific length. The default length is 30.

$truncated = Text::truncate($string,['length'=>50,'end'=>'... truncated']);

Word Wrap

To wordwrap a string

$wrapped = Text::wordWrap($string); // default is 80
$wrapped = Text::wordWrap($string,['width'=>50]);

Other

Other handy string functions (through mb_string)

$lowerCase = Text::lower($string);
$uppserCase = Text::upper($string);
$int = Text::length($string);