preg_split没有删除搜索模式

时间:2014-12-18 03:28:53

标签: php regex

我有几千个要解析的文本文件,它是一个遵循某种模式的产品目录。

它有两个序列号,其中一个是我将整个文本分成一个数组,每个键都是一个产品。

问题是我在preg_split中使用的序列从产品中删除了,我需要它。

这是一个原始产品:

1532.000028-01532.213.00010875-8
TRES ANÉIS, DOIS PENDENTES, DOIS BRINCOS, SENDO UM 
COM 
TARRACHA DE METAL NÃO NOBRE, DE: OURO, OURO BRANCO BAIXO; 
CONTÉM: diamantes, pérola cultivada, pedra, massa; CONSTAM: amassada(s), 
incompleta(s), PESO LOTE: 13,50G (TREZE GRAMAS E CI NQUENTAR$ 901,00
Valor Grama: 66,74

第一个数字是两个连续出版物,它们由于PDF解析器的缺陷而粘在一起。

这是我用来将数组拆分成产品的REGEX:

$texto = preg_split("/([0-9]{4}[.][0-9]{6}[-][0-9]{1})+/",$texto);

输出:

1532.213.00010875-8
TRES ANÉIS, DOIS PENDENTES, DOIS BRINCOS, SENDO UM 
COM 
TARRACHA DE METAL NÃO NOBRE, DE: OURO, OURO BRANCO BAIXO; 
CONTÉM: diamantes, pérola cultivada, pedra, massa; CONSTAM: amassada(s), 
incompleta(s), PESO LOTE: 13,50G (TREZE GRAMAS E CI NQUENTAR$ 901,00
Valor Grama: 66,74

如您所见,第一个序列从输出中删除。我需要它。如何拆分这些产品,保留两个阵列?

1 个答案:

答案 0 :(得分:7)

将您的捕获组更改为lookahead,如下所示:

$texto = preg_split("/(?=[0-9]{4}[.][0-9]{6}[-][0-9]{1})/",$texto);