[检查我为更好的解释编辑]转换大的字符串返回数组 - PHP
我需要一些帮助非常大的字符串我有。
它是这样的:
$big_string = "TinteiroID:1#TinteiroLABEL:HP CB335EE#TinteiroREF:CB335EE#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:23#FIMPROD#TinteiroID:4#TinteiroLABEL:HP 51633 M#TinteiroREF:51633 M#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:12#FIMPROD#";
它,因为没有断裂线,但它作为空格。
如果我们好好看看这个,它们是2串这样的:
$splited_string = "TinteiroID:1#TinteiroLABEL:HP CB335EE#TinteiroREF:CB335EE#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:23#FIMPROD#";
我想我需要一个preg_split
在$big_string
搜索此:
TinteiroID:[only numbers]#TinteiroLABEL:[any character, except "#"]#TinteiroREF:[any character, except "#"]#TinteiroMARCA:[any character, except "#"]#TinteiroGENERO:[any character, except "#"]#TinteiroQUANTIDADE:[only numbers]#FIMPROD#
我有条纹$splited_string
和[]方括号内我引用哪些字符它可以在那里。
对于应该接受的每种字符类型,它应该是RegExpression标记,而不是[]方括号。但我对此知之甚少。然后将每个$splited_string
存储在数组$array
中。
任何人都可以提供一些线索如何做到这一点?
感谢
编辑:
我试着解释我的逻辑。
我有这样大的字符串(无断线):
TinteiroID:1#
TinteiroLABEL:HP CB335EE#
TinteiroREF:CB335EE#
TinteiroMARCA:HP #
TinteiroGENERO:黑色墨盒回收 #
TinteiroQUANTIDADE:23#
FIMPROD#
TinteiroID:4#
TinteiroLABEL:HP 51633 M#
TinteiroREF:51633 M#
TinteiroMARCA: HP#
TinteiroGENERO:黑色墨盒回收 #
TinteiroQUANTIDADE:12#
FIMPROD#
它们可以分裂成两个较小的字符串。
随着预浸料分割我想每个splited串看起来很像这些那些分配,但具有不同的值:
TinteiroID:[only numbers]#
TinteiroLABEL:[any character, except "#"]#
TinteiroREF:[any character, except "#"]#
TinteiroMARCA:[any character, except "#"]#
TinteiroGENERO:[any character, except "#"]#
TinteiroQUANTIDADE:[only numbers]#
FIMPROD#
每个splited串然后添加到一个数组:
Array
(
[0] => TinteiroID:1#TinteiroLABEL:HP CB335EE#TinteiroREF:CB335EE#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:23#FIMPROD#
[1] => TinteiroID:4#TinteiroLABEL:HP 51633 M#TinteiroREF:51633 M#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:12#FIMPROD#
)
然后会有一个for each循环去到阵列中的每个对象。 [0] [1] ...
从另一个RegExpression收集的价值观和做这些价值观的东西。
是它的 “混乱”,并需要大量CPU,但..我没有一个更好的主意:S
编辑:
继忠告:
我已经做了这样的代码:
$big_string = "TinteiroID:1#TinteiroLABEL:HP CB335EE#TinteiroREF:CB335EE#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:23#FIMPROD#TinteiroID:4#TinteiroLABEL:HP 51633 M#TinteiroREF:51633 M#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:12#FIMPROD#";CB335EE#TinteiroREF:CB335EE#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:23#FIMPROD#";
$array = explode("FIMPROD#", $big_string);
print_r ($array);
拆分big_string到在每个“#FIMPROD”分隔符为每一个的端部。
现在我走在阵列上,并为它的每个值。用它做什么。
我会尝试现在...我会发布一些事情,我设法做到或不做。
这对我来说很好。看,最简单的方法往往是最好的。 – pavium 2009-10-03 15:00:51