我有一个巨大的字符串,我需要分开。它的某些部分有所不同,有些则没有。我面临的困难是,我无法找到一个符号或其他东西,我无法找到我想用于preg_replace的匹配,因为它是全部字母数字。这是字符串:
$str = "01;01;283;Póvoa do Vale do Trigo;15315100
01;01;249;Alcafaz;;;;;;;;;;;3750;011;AGADÃO
01;01;2504;Caselho;;;;;;;;;;;3750;012;AGADÃO _ 15 '' ghdhghg
01;01;25155;Corga da Serra;;;;;;;;;;;3750;013;AGADÃO 01;01;252;Foz;;;;;;;;;;;3750;014;AGADÃO
01;01;253;Guistola;;;;;;;;;;;3750;015;AGADÃO 01;01;254;Guistolinha;;;;;;;;;;;3750;016;AGADÃO
01;01;255;Lomba;;;;;;;;;;;3750;017;AGADÃO AND IT CONTINUES ...";
因此,如果我们查看字符串的第一部分(01;01;283;Póvoa do Vale do Trigo;15315100
),我想要保留的是:
01;01;283;
并匹配:
;Póvoa do Vale do Trigo;15315100
并替换为空格。
最后我想要这个:
01;01;283 01;01;249 01;01;2504; 01;01;25155 01;01;252 01;01;253 01;01;254 01;01;255
我换了之后:
;Póvoa do Vale do Trigo;15315100
;Alcafaz;;;;;;;;;;;3750;011;AGADÃO
;Caselho;;;;;;;;;;;3750;012;AGADÃO _ 15 '' ghdhghg
;Corga da Serra;;;;;;;;;;;3750;013;AGADÃO
;Foz;;;;;;;;;;;3750;014;AGADÃO
;Guistola;;;;;;;;;;;3750;015;AGADÃO
;Guistolinha;;;;;;;;;;;3750;016;AGADÃO
;Lomba;;;;;;;;;;;3750;017;AGADÃO
""
对不起任何拼写错误我是葡萄牙语。
答案 0 :(得分:0)
这是代码:
$str = "01;01;283;Póvoa do Vale do Trigo;15315100
01;01;249;Alcafaz;;;;;;;;;;;3750;011;AGADÃO
01;01;2504;Caselho;;;;;;;;;;;3750;012;AGADÃO _ 15 '' ghdhghg
01;01;25155;Corga da Serra;;;;;;;;;;;3750;013;AGADÃO 01;01;252;Foz;;;;;;;;;;;3750;014;AGADÃO
01;01;253;Guistola;;;;;;;;;;;3750;015;AGADÃO 01;01;254;Guistolinha;;;;;;;;;;;3750;016;AGADÃO
01;01;255;Lomba;;;;;;;;;;;3750;017;AGADÃO AND IT CONTINUES ...";
$str2 = preg_replace('/^([0-9]+;[0-9]+;[0-9]+).*[\r\n]+/m', '$1 ', $str."\n");
echo $str2;
输出:
01;01;283 01;01;249 01;01;2504 01;01;25155 01;01;253 01;01;255
答案 1 :(得分:0)
你可以试试这个:
$result = preg_replace('~(?:[0-9]+;?){3}\K;.+?(?=(?>[0-9]+;){3}|$)~s', ' ', $str);
我们的想法是匹配3个数字,并使用\K
将其从匹配结果中删除。然后,将所有内容与.+?
匹配,直到接下来的3个数字或字符串结尾。
您可以尝试其他模式:
$result = preg_replace('~;[^0-9].+?(?=(?>[0-9]+;){3}|$)~s', ' ', $str);