Можно ли иметь 3 разделителя для функции разнесения - PullRequest
2 голосов
/ 02 июня 2011

Вариант 1 (пробелы)

keyword keyword keyword

Вариант 2 (разрывы строк)

keyword
keyword
keyword

Вариант 3 (запятые)

keyword, keyword, keyword

Или мне вместо этого придется использовать функцию разделения? И если да, то как?

Ответы [ 3 ]

4 голосов
/ 02 июня 2011

Попробуйте использовать preg_split, но обратите внимание, что это взорвется на всех ваших примерах сразу.

$parts = preg_split("/[ ,\n]/", $string);

Редактировать: В третьем примере, который вы дадите, вы получите пустые элементы массива, поскольку они разделяются как на запятую, так и на пробел. Пропустите $parts через array_filter(), чтобы удалить их.

0 голосов
/ 02 декабря 2017

str_word_count () за выигрыш!

Эта задача не требует разделителей переменных или регулярных выражений - при условии, что все эти "ключевые слова" являются "словами" ...

Код: ( Демо )

$strings=[
    'keyword keyword keyword',
    'keyword
keyword
keyword',
    'keyword, keyword, keyword'
];
foreach($strings as $string){
    var_export(str_word_count($string,1));
    echo "\n";
}

Выход:

array (
  0 => 'keyword',
  1 => 'keyword',
  2 => 'keyword',
)
array (
  0 => 'keyword',
  1 => 'keyword',
  2 => 'keyword',
)
array (
  0 => 'keyword',
  1 => 'keyword',
  2 => 'keyword',
)
0 голосов
/ 02 июня 2011

Не так просто, как preg_split, но strtok () также опция

...