2013-11-27 4 views
0

Я PHP noob. Я не мог понять, как преобразовать список чисел в строку в чистые целые числа.Преобразование строки с числами в чистые целые числа

Это точная строка я (!):

" 70, 51, 53, " 

Вот что она должна выглядеть после преобразования:

70, 51, 53 

То, что я хочу, чтобы это выход:

<? $featureIDs = array(70, 51, 53) ?> 

Благодарим вас за помощь!

+0

Название говорит, что вы хотите чистые целые и вопрос запрашивает строку с разделителями запятыми. Что не так? Какой PHP-код вы создали до сих пор? –

+0

Я отредактировал мой оригинальный вопрос! Спасибо за ваши усилия! – christophe

ответ

1

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

$string = '" 70, 51, 53, "'; 
$output = explode(',',preg_replace("/[^0-9,]/", "", $string)); 
foreach($output as $k => $v) { 
    if (!$v) { 
     unset($output[$k]); 
    } 
} 
var_dump($output); 
+0

"" не являются частью строки! Спасибо! – christophe

+0

Хорошо, все равно будет работать :) –

+0

вот и все, спасибо! – christophe

0

заказ функция explode():

$numbers = explode(',', '70, 51, 53'); 

После того, как вы их в массиве, так как PHP свободно напечатал, вы можете использовать их как целые числа или строки. Конечный , может вызвать проблему, поэтому вы можете удалить ее.

0
$ a = " 70, 51, 53, "; 
$integerArray = explode(',', trim($a , " ,")); 

облицовку() очистят все запятые и пробела из начала и конца строки, взрываются отделят строку через запятую для отдельных строк в массиве, и, как PHP обрабатывает числовые строки так же как числа, это будут прав:

$integerArray[0] + 30 == 100 
0

Во-первых: удалить все пробелы, используя

$string = str_replace(' ', '', $string);

Затем разделить строку в каждый элемент:

$featureIDs = explode(',', $string);

Наконец, превратить все строки в целые числа:

array_walk($featureIDs , 'intval');

+0

Выводит «Bool (True)»: christophe

+0

no, $ featureIDs содержит целые числа, так как array_walk использует ссылку. Изменено имя в моем ответе –

+0

вам не нужно превращать строки в целые числа, php интерпретирует строки как целые числа уже – Benedictus

0

Используйте preg_match_all(), выберите все «последовательности цифр».

$input = " 70, 51, 53, "; 

$ids = array(); 
if (preg_match_all('(\d+)', $input, $matches)) { 
    $ids = $matches[0]; 
} 

var_dump($ids); 

Выход:

array(3) { 
    [0]=> 
    string(2) "70" 
    [1]=> 
    string(2) "51" 
    [2]=> 
    string(2) "53" 
} 
Смежные вопросы