Удаление дублирующихся символов в строках



Если вам нужно удалить дубликаты строк в Laravel и PHP-приложениях, в Laravel v11.20 добавлен новый метод deduplicate в String helpers, который позволяет быстро и легко удалять дубликаты символов.



use Illuminate\Support\{Str,Stringable};



$string = '/usr/local////path/to///desktop';



Str::deduplicate($string, '/');

// «/usr/local/path/to/desktop»



(new Stringable($string))->deduplicate('/')->toString();

// «/usr/local/path/to/desktop»




По умолчанию символом замены в методе deduplicate() является пробел, что также может быть использовано для помощника squish(), представленного в Laravel v9.7.0:



Str::deduplicate(' John Smith Jr. '); // « John Smith Jr. »

Str::squish(' John Smith Jr. '); // «John Smith Jr.»




Обратите внимание на лишние пробелы ' ' в начале и в конце при использовании deduplicate(), это сделано специально. Deduplicate используется для замены последовательных экземпляров данного символа на один символ в данной строке. Squish также удаляет другие пробельные символы, такие как новые строки и табуляции:



// Каждый пример возвращает `laravel php framework`:

Str::squish(' laravel php framework '));

Str::squish(«laravel\t\tphp\n\nframework»);

Str::squish('

laravel

php

framework

');