按十进制数PHP拆分字符串

时间:2012-06-19 22:26:33

标签: php

我有一个像这样的字符串:

  

1.1 Apoyar enlaplaneaciónyrealizacióndeproceduientientos para el mantenimiento delaintruraaciónyequipo automatizados。 (JEFE DE   MANTENIMIENOMELEÓNICO,ELÉCTRICOEMINSTRUMENTACIÓN。)   

     

2.1     Supervisar   que losequiposelectrónicosenPaataciónesténtrabajando   correctamente(JEFE DEMANTENIMIENOMELECTRÓNICO,ELÉCTRICOD   INSTRUMENTACIÓN。)

如何在php中拆分它以获得数组或元组:

  

[0] => 1.1

[1] => Apoyar enlaplaneaciónyrealizacióndeproceduientientos para el mantenimiento de lainstrumentaciónyequipo automatizados。 (JEFE DEMANTENIMIENOMELECTRÓNICO,ELÉCTRICOEMINSTRUMENTACIÓN。)

  

[0] => 2.1

[1] => Supervisar que losequiposelectrónicosemediumaciónesténtrabajandocorrectamente(JEFE DEMANTENIMIENOMELECTRÓNICO,ELÉCTRICOEMINSTRUMENTACIÓN。)

或类似的内容:

  

[0] => 1.1

[1] => Apoyar enlaplaneació能realizacióndeproceduientientos para el mantenimiento de lainstrumentaciónyequipo automatizados。 (JEFE DEMANTENIMIENOMELECTRÓNICO,ELÉCTRICOEMINSTRUMENTACIÓN。)

[2] => 2.1

[3] => Supervisar que losequiposelectrónicosesacitoraciónesténtrabajandocorrectamente(JEFE) DEMANTENIMIENOMELECTRÓNICO,ELÉCTRICOEMINSTRUMENTACIÓN。)

我一直在尝试使用preg_split的正则表达式,如[[0-9]。] +,但我不知道它是否可行。 谢谢你的帮助。

4 个答案:

答案 0 :(得分: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。 )

答案 1 :(得分:1)

您可以使用preg_split将字符串拆分几乎任何模式。

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

答案 2 :(得分:1)

正如wrikken所评论的,preg_splitPREG_DELIM_CAPTURE应该这样做:

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

我还添加了PREG_SPLIT_NO_EMPTY因为可能会出现空的(例如开头的空字符串),而这个标志会阻止它。

Demo

答案 3 :(得分: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);