2016-04-18 2 views
0

В PHP, когда я запускаю следующую команду:Использование preg_split на пустой строке

$text = ""; 
$arr = preg_split('/,/', $text, PREG_SPLIT_NO_EMPTY); 
print_r($arr); 

Я получаю следующий массив с одним пустым элементом:

Array 
(
    [0] => 
) 

Тем не менее, если я запускаю его с -1 как предел:

$text = ""; 
$arr = preg_split('/,/', $text, -1, PREG_SPLIT_NO_EMPTY); 
print_r($arr); 

Я получаю совершенно пустой массив:

Array 
(
) 

Почему это так? В соответствии с PHP manual -1 значение по умолчанию, поэтому я ожидаю, что результаты будут одинаковыми в обоих случаях.

+0

Вы пытались считать символы с помощью функции 'strlen()'? – Jer

+0

PREG_SPLIT_NO_EMPTY Если этот флаг установлен, то preg_split() будет возвращать только непустые кусочки. поэтому его значение onli non emty так использует другой, как «PREG_SPLIT_DELIM_CAPTURE» –

ответ

3
preg_split($pattern , $subject [, int $limit = -1  [, int $flags = 0 ]]) 
preg_split('/,/' , $text  , PREG_SPLIT_NO_EMPTY      ); 

Третий параметр является пределом, PREG_SPLIT_NO_EMPTY == 1, когда вы проходите PREG_SPLIT_NO_EMPTY в качестве третьего аргумента вы рассказываете это предел 1 - вы не передавая его в качестве флага ,

+3

Итак, короче: передал константу как неправильный аргумент = пустые элементы разрешены – Rizier123

+0

Спасибо. Вы правы! – kojow7

Смежные вопросы