2012-03-30 2 views
2

Когда я разбиваю строку с пробелами, она не удаляет sapces. Моя строка выглядит следующим образом:Сплит и пробелы PHP

$string = 'one - two - three'; 

Мой PHP вызов выглядит следующим образом:

list($blk1, $blk2, $blk3) = split('\s*\-\s*', $string); 

Я бы предположить, регулярное выражение будет разделить на ноль или более пробелов, но пробелы остаются в результирующем массиве.

Любая идея, почему?

+1

не используют сплит :(-> Использование preg_split – snaderss

ответ

0

Вы могли бы попробовать что-то вроде:

[\s-]+ 

не на 100% знакомы с PHP, но он должен работать.

1

Я не знаю точно, что сказать вам по прямому вопросу, но, как вы можете видеть на странице руководства http://php.net/split, эта функция устарела, вы не должны полагаться на нее.

Почему вы не просто использовать взрываются как это:

$string = 'one - two - three'; 
$parts = explode(' - ', $string); 
$blk1 = $parts[0]; 
$blk2 = $parts[1]; 
$blk3 = $parts[2]; 
3

split является давно устаревшим в PHP. Рассмотрите возможность использования `preg_split'

$string = 'one - two - three'; 
list($blk1, $blk2, $blk3) = preg_split('/\s*\-\s*/', $string); 
+0

Я пропустил это как-то. Preg_split отлично работает. – user1216398

1

Почему бы не использовать explode()?

function trim_value(&$value) 
{ 
    $value = trim($value); 
} 

$array = explode("-", $string); 

array_walk($array, 'trim_value'); 

Там вы идете: http://codepad.viper-7.com/ULr1NO

0

Так как счетчик против регулярных выражений для такой тривиальной задачи с разделителями строки:

$string = 'one - two - three'; 
$parts = explode(' - ', $string); 
array_walk($parts, 'trim'); 
var_dump($parts); 
Смежные вопросы