我有一个这样的字符串:
1.1 Apoyar en la planeación y realización de procedimientos para el mantenimiento de la instrumentación y equipo automatizados.(杰菲· MANTENIMIENO ELECTRÓNICO, ELÉCTRICO E INSTRUMENTACIÓN.)
2.1 超级签证 Que los equipos electrónicos e instrumentación estén trabajando correctamente (JEFE DE MANTENIMIENO ELECTRÓNICO, ELÉCTRICO E 乐器)
如何在 php 中拆分它以获得数组或元组,例如:
[0] => 1.1[1]=> Apoyar en la planeación y realización de procedimientos para el mantenimiento de la instrumentación y equipo automatizados.(JEFE DE MANTENIMIENO ELECTRÓNICO, ELÉCTRICO E INSTRUMENTACIÓN.)
[0]=>2.1
[1]=>Supervisar que los equipos electrónicos 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 y equipo automatizados.(JEFE DE MANTENIMIENO ELECTRÓNICO, ELÉCTRICO E INSTRUMENTACIÓN.)
[2]=>2.1
[3]=>Supervisar que los equipos electrónicos e instrumentación estén trabajando correctamente (JEFE DE MANTENIMIENO ELECTRÓNICO, ELÉCTRICO E INSTRUMENTACIÓN.)
我一直在尝试使用正则表达式preg_split类似于 [[0-9] 的东西。+但我不知道是否有可能。感谢您的帮助。
> 满足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);
这是一个代码板示例。
您可以使用preg_split
几乎按任何模式拆分字符串。
// not tested
preg_split( '/[0-9]{1-99}'.[0-9]{1-99}/', $input );
正如 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
,因为您可能会得到空的(例如开头的空字符串),并且此标志可以防止这种情况。
演示
快速而肮脏的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);