2015-03-10 4 views
0

Я пытаюсь использовать preg_split, чтобы разбить строку на любое количество пробелов, заменив что-нибудь, кроме буквы или цифры пробелом ... Вот мой код (включая некоторые отладочные материалы) :preg_split не разбивается на пробел

$input = strtolower($data_current[0]); 
$input = preg_replace('/[^a-z0-9]/', ' ', $input); 
echo($input."\r\n"); 
$array = preg_split('/[\s]+/', $input, PREG_SPLIT_NO_EMPTY); 
print_r($array); 
die; 

Пусть значение $data_current[0] является 'привет мир'. Выход я получаю это ...

hello world 
array 
(
    [0] => hello world 
) 

Очевидно, что я бы ожидать массив с двумя значениями ... «привет» и «мир».

Что происходит в мире? $data_current массив считывается из CSV (с использованием fgetcsv), если это помогает ...

+0

как насчет использования $ array = explode ('', $ input)? –

+0

Я хочу разделить на несколько пространств. –

ответ

3

Проблема заключается в том, что вы используете PREG_SPLIT_NO_EMPTY но вместо четвертого параметра, вы ставите его в качестве третьего, эффективно положить предел , см. руководство по телефону preg_split().

Вы должны использовать:

preg_split('/\s+/', $input, -1, PREG_SPLIT_NO_EMPTY); 
           ^^ flags go in the 4th parameter of the function 
          ^^ default value, no limit 

или:

preg_split('/\s+/', $input, NULL, PREG_SPLIT_NO_EMPTY); 
+1

Упс! Благодарю. Отсканировал документы слишком быстро. –

0

Чтобы разделить на два или более пробелов, изменение

$array = preg_split('/[\s]+/', $input, PREG_SPLIT_NO_EMPTY); 

в

$array = preg_split('/[\s][\s]+/', $input); 
Смежные вопросы