preg replace — PHP, объединяющий маленькие слова в строке с preg_replace

В попытках нормализовать текст для нечеткого соответствия я пытаюсь объединить односимвольные слова (в основном части инициализма) в одно слово. Числа игнорируются. Вот где я нахожусь:

$strings = array("CROWN ROYAL X R CANADIAN WHISKEY", "CROWN ROYAL X R", "REMY V S O P 8 0", "BARTON L I I T");
$string = preg_replace('/\b([A-Z]){1}\s([A-Z]){1}\b/', '\1\2', $string);

Результаты:

«CROWN ROYAL XR CANADIAN WHISKEY», «CROWN ROYAL XR», «REMY VS OP 8 0», «BARTON LI IT»

Мне нужен ВСОП и ЛИИТ. Я реализовал обходной путь с помощью $string = preg_replace('/\b([A-Z]){1}\s([A-Z]){1}([A-Z]){1}\s([A-Z]){1}\b/', '\1\2\3\4', $string); во-первых, но я уверен, что есть более изящное и менее затратное решение?

0

Решение

Проверь это

$strings = preg_replace('~(?<=\b[A-Z])\s+(?=[A-Z]\b)~', '', $strings);
-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]