The Str::replaceMatches method replaces all portions of a string matching a pattern with the given replacement string:

use Illuminate\Support\Str;
 
$replaced = Str::replaceMatches(
    pattern: '/[^A-Za-z0-9]++/',
    replace: '',
    subject: '(+1) 501-555-1000'
)
 
// '15015551000'

The replaceMatches method also accepts a closure that will be invoked with each portion of the string matching the given pattern, allowing you to perform the replacement logic within the closure and return the replaced value:

use Illuminate\Support\Str;
 
$replaced = Str::replaceMatches('/\d/', function (array $matches) {
    return '['.$matches[0].']';
}, '123');
 
// '[1][2][3]'

source