2012-06-19 6 views
1

У меня есть строка, как этот:Разбивает строку по десятичного числа PHP

1.1 Поддержка в процессе планирования и выполнения процедур по техническому обслуживанию приборов и автоматизированного оборудования. (РУКОВОДИТЕЛЬ mantenimieno электронных, электрических и измерительных приборов.)

2,1 Контролировать , что электронные приборы и оборудование работает правильно (главный mantenimieno электронных, электрических Instrumentation.)

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

[0] => 1,1

[1] => Поддержка в процессе планирования и выполнения процедур по техническому обслуживанию приборов и автоматизированного оборудования. (РУКОВОДИТЕЛЬ mantenimieno электронных, электрических и измерительных приборов.)

[0] => 2,1

[1] => Контролируют электронное оборудование и приборы работают должным образом (ГЛАВНЫЙ mantenimieno электронные, электрические и измерительные приборы.)

или что-то вроде:

[0] => 1,1

[1] => Поддержка в планировании и реализации процедуры по техническому обслуживанию контрольно-измерительных приборов и автоматических устройств. (РУКОВОДИТЕЛЬ mantenimieno электронных, электрических и измерительных приборов.)

[2] => 2,1

[3] => Контролируют электронное оборудование и приборы работают должным образом (ГЛАВНЫЙ mantenimieno электронные, электрические и измерительные приборы.)

Я ве пытался с регулярным выражением preg_split с чем-то вроде [[0-9].] + я не знаю, но позвони мне можно. Спасибо за помощь.

+0

Пожалуйста, форматировать вопрос – blockhead

+1

preg_split с 'PREG_DELIM_CAPTURE' должны сделать трюк. – Wrikken

ответ

2

Знакомства preg_split:

$testString = '1.1 That big array of 2.1 data which is separated by 2.3 some text'; 
$testChunks = preg_split('/\s*(\d+\.\d+)\s*/', $testString, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
print_r($testChunks); 

Вот codepad sample играть.)

+0

Большое спасибо, что делать трюк! – anorox

1

Вы можете использовать preg_split разделить строку почти любой узор.

// not tested 
preg_split('/[0-9]{1-99}\.[0-9]{1-99}/', $input); 
1

Как wrikken прокомментировал preg_split С PREG_DELIM_CAPTURE должны это сделать:

preg_split('/\s*(\d+\.\d+)\s*/', $subject, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 

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

Demo

+0

Спасибо за объяснение – anorox

+0

Нет проблем, это также помогло raina77ow, поэтому все преимущества;) – hakre

1

Быстрый и грязный preg_split:

$result = preg_split('/([0-9]+.[0-9]+)/',$text,-1,PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE); 

$items = array(); 
for($i=0;$i<count($result);$i++) { 
    if ($i%2===0) { 
     $items[$result[$i]] = $result[$i+1]; 
     $i++; 
    } 
} 

print_R($items); 
+0

Я должен был обновиться перед публикацией ... – somedev

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