Разобрать строчку

Есть строчки

  Пых Пых1 Пых2 
  Пых   Пых1   Пых2 Пых 
Пых Пых1 Пых2

На выходе необходимо получить ['Пых', 'Пых1', 'Пых2'] либо ['Пых', 'Пых1', 'Пых2', 'Пых']

То есть чтобы не было пробелов, создать массив из слов ориентируясь по пробелам. Количество пробелов может быть разное, между словами. Что в начале, что в конце, что между словами.


Ответы (1 шт):

Автор решения: Emmanyel Chasovskih

Однажды писал токенизаторы, вот пригодилась whitespace

function tokenize(string $text):array
{
    $substrings = preg_split('/[\pZ\pC]+/u', $text, -1, PREG_SPLIT_NO_EMPTY);
    if ($substrings === false) {
        throw new \Exception('preg_split failed on: ' . $text);
    }

    return $substrings;
}

Например, tokenize(" Пых Пых1 Пых2 Пых ") вернет

array(4) {
  [0]=>
  string(6) "Пых"
  [1]=>
  string(7) "Пых1"
  [2]=>
  string(7) "Пых2"
  [3]=>
  string(6) "Пых"
}
→ Ссылка