1

我有一个这样的字符串:

1.1 Apoyar en la planeación y realización de procedimientos para el mantenimiento de la instrumentación yequipo automatizados。(JEFE DE MANTENIMIENO ELECTRÓNICO,ELÉCTRICO E INSTRUMENTACIÓN。)

2.1 Supervisar que losequipos electroncos e instrumentación estén trabajando Correctamente (JEFE DE MANTENIMIENO ELECTRÓNICO, ELÉCTRICO E INSTRUMENTACIÓN.)

如何在 php 中拆分它以获取数组或元组,例如:

[0] => 1.1

[1]=> Apoyar en la planeación y realización de procedimientos para el mantenimiento de la instrumentación yequipo automatizados。(JEFE DE MANTENIMIENO ELECTRÓNICO,ELÉCTRICO E INSTRUMENTACIÓN。)

[0]=>2.1

[1]=>Supervisar que losequipos electroncos e instrumentación estén trabajando Correctamente (JEFE DE MANTENIMIENO ELECTRÓNICO, ELÉCTRICO E INSTRUMENTACIÓN.)

或类似的东西:

[0]=>1.1

[1]=>Apoyar en la planeación y realización de procedimientos para el mantenimiento de la instrumentación yequipo automatizados。(JEFE DE MANTENIMIENO ELECTRÓNICO,ELÉCTRICO E INSTRUMENTACIÓN。)

[2]=>2.1

[3]=>Supervisar que losequipos electroncos e instrumentación estén trabajando Correctamente (JEFE DE MANTENIMIENO ELECTRÓNICO, ELÉCTRICO E INSTRUMENTACIÓN.)

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

4

4 回答 4

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);

这是一个可以使用的键盘示例。)

于 2012-06-19T22:32:27.113 回答
1

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

// not tested
preg_split( '/[0-9]{1-99}\.[0-9]{1-99}/', $input );
于 2012-06-19T22:32:17.040 回答
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因为您可能会得到空字符串(例如开头的空字符串),而这个标志可以防止这种情况。

演示

于 2012-06-19T22:34:05.757 回答
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);
于 2012-06-19T22:41:35.810 回答