Skip to content

jkque/laravel-string-replace

Repository files navigation

For complex string replace

Latest Version on Packagist Total Downloads

This package will help you when str_replace gets a little bit messy.

Introduction

When you see something like this:

$remove_characters = ['<p>', '</p>', '&#39;', '&#039;', '<h2>', '</h2>', '<strong>', '</strong>', '&nbsp;', '&#63;','@name', '&rsquot;', '&quot;', '@firstname'];
$replace_with = ['', '', "'", "'", '', '', '', '', '', '?', $user->name, "'", '"', $user->first_name];

$message = str_replace($remove_characters, $replace_with, $message);

A cleaner way:

use Jkque\StringReplace\StringReplace;

$message = StringReplace::content($string)
    ->when($user, function ($string) use($user) {
        return $string->with(new UserStringReplace($user));
    })
    ->variables([
        '&#39;' => "'",
        '&#63;' => '?'
    ])
    ->replace();
use Jkque\StringReplace\StringReplace;

use App\User;

class UserStringReplace extends StringReplace
{
    public function __construct(User $user)
    {
        $this->variables([
            '@name' => $user->name,
        ]);
    }
}

Usage

use Jkque\StringReplace\StringReplace;

$string = 'We are awesome <p>in php</p> replacethis';

$string = StringReplace::content($string)
    ->variables([
        'replacethis' => 'coding',
    ])
    ->replace(); // the ending method to be called

You can use conditional closures when and unless

$string->when($somecondtion, function ($string) {
 // do something;
})

By default html tags is being strip but you can turn it off by passing a false value in stripTags(false) method.

Pipeline

To breakdown complex process into individual tasks you can create a class that extends Jkque\StringReplace\StringReplace

use Jkque\StringReplace\StringReplace;

class RemoveBadWords extends StringReplace
{
    public function __construct()
    {
        $this->variables([
            'badword' => '*',
        ]);
    }
}

A helper command to create this class php artisan string-replace:pipe {name} {model? : With model}. You can change the namespace of your model in the config file the default is 'App\'.

Installation

You can install the package via composer:

composer require jkque/laravel-string-replace

publish config files

php artisan vendor:publish --provider="Jkque\StringReplace\StringReplaceServiceProvider"

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

About

Helper for a messy str_replace

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages