я использую preg_split в дальнейшем:
<?php
$num = 99.14;
$pat = "[^a-zA-Z0-9]";
$segments = preg_split($pat, $num);
print_r($segments);
Я ожидал, что $ сегменты будут массивом array(99,14)
Тем не менее, это возвращает array(99.14)
Я не знаю, почему preg_split делает это, в то время как шаблон, по которому он должен разбивать строку, является любым специальным символом, то есть не алфавитно-цифровым.
Проверьте это демо: http://codepad.org/MUusnwis
Вы должны добавить разделители к своему регулярному выражению следующим образом:
<?php
$num = 99.14;
$pat = "/[^a-zA-Z0-9]/";
//^------------^Delmimiter here
$segments = preg_split($pat, $num);
print_r($segments);
?>
Выход:
Array ( [0] => 99 [1] => 14 )
РЕДАКТИРОВАТЬ:
Вопрос, почему OP вернул всю строку обратно в массив, прост! Если вы прочитали руководство здесь: http://php.net/manual/en/function.preg-split.php
И возьмите быструю цитату оттуда под примечаниями:
Совет
Если сопоставление не удалось, будет возвращен массив с единственным элементом, содержащим входную строку.
Если вы хотите разделить только по десятичной дроби, вы также можете использовать:
$array = explode('.', $num);
Вы также можете использовать Инструмент T-Regx и таких проблем не будет 🙂
Разделители не требуются
<?php
$num = 99.14;
$pat = "[^a-zA-Z0-9]"; // no delimiters :)
$segments = pattern($pat)->split($num);
print_r($segments);