php preg_replace正则表达式之前和之后

时间:2013-10-24 15:27:48

标签: php regex preg-replace

我无法弄清楚如何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;123之前和之后的所有内容。 1234始终是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";

2 个答案:

答案 0 :(得分:2)

或者得到它们:

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

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

答案 1 :(得分: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