0

我不知道如何 preg_replace 以下字符串:

$str = "01;01;0000000; text, spaces and many tipes of caracters like : . ; ' - and then ;1234;123; text and/or numbers and/or symbols 02;05;1111; text, spaces and many tipes of caracters like : . ; ' - and then ;4444;333; text and/or numbers and/or symbols 03;07;45457; text, spaces and many tipes of caracters like : . ; ' - and then ;4321;321; text and/or numbers and/or symbols ";

所以我想替换之前和之后的所有内容1234;1231234始终是 4 个数字的序列,并且123始终是 3 个数字的序列

这是原始字符串的一部分

$str= "01;01;249;Alcafaz;;;;;;;;;;;3750;011;AGADÃO 01;01;250;Caselho;;;;;;;;;;;3750;012;AGADÃO 01;01;251;Corga da Serra;;;;;;;;;;;3750;013;AGADÃO 01;01;252;Foz;;;123;;;;;3750;014;AGADÃO 01;01;253;Guistola;;;ni ;;;;;3750;015;AGADÃO 01;01;254;Guistolinha;;;;.;;;;3750;016;AGADÃO 01;01;255;Lomba;;;;-;;;;;3750;017;AGADÃO 01;01;256;Povinha;;;;;;;;;;;3750;018;AGADÃO 01;01;257;Vila Mendo;;;; ;;;3750;019;AGADÃO 01;01;258;Aguada de Baixo;;;;;;;;;;PC AGUADA DE BAIXO;3750;996;AGUADA DE BAIXO 01;01;258;Aguada de Baixo;;;;;;;;;;;3750;031;AGUADA DE BAIXO 01;01;260;Landiosa;;;::::;;;;3750;033;AGUADA DE BAIXO 01;01;262;Passadouro;;;;;;;;;;;3750;035;AGUADA DE BAIXO 01;01;263;Aguada de Cima;;;;;;**;;;3750;041;AGUADA DE CIMA 01;01;264;Aguadalte;;;;;-+;;;3750;042;AGUADA DE CIMA";
4

2 回答 2

2

或获取它们:

preg_match_all('/;([\d]{4};[\d]{3});/', $str, $m);
print_r($m[1]);

然后你可以使用数组或内爆它们来创建一个字符串或其他任何东西。

于 2013-10-24T15:42:27.053 回答
0

我真的不是正则表达式大师,但这对我有用:

preg_replace('/()([0-9]{4};[0-9]{3})()/im', 'AAA', $yourString);

Outputs:
01;01;0000000; text, spaces and many tipes of caracters like : . ; ' - and then ;AAA; text and/or numbers and/or symbols 02;05;1111; text, spaces and many tipes of caracters like : . ; ' - and then ;AAA; text and/or numbers and/or symbols 03;07;45457; text, spaces and many tipes of caracters like : . ; ' - and then ;AAA; text and/or numbers and/or symbols
于 2013-10-24T15:39:07.950 回答