내가이 매우 큰 문자열 도움이 필요- PHP
[더 나은 설명에 대한 나의 EDIT 확인]. 이 같은
그것을 : 없음 브레이크 선으로
$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#";
그것을하지만 공백으로. 우리는 이것이 좋은 모습을 가지고가는 경우에
, 그들은이 문자열은 다음과 같습니다
$splited_string = "TinteiroID:1#TinteiroLABEL:HP CB335EE#TinteiroREF:CB335EE#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:23#FIMPROD#";
나는이에 대한 $big_string
에서 검색 할 preg_split
필요하다고 생각 :
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
나는 (NO 브레이크 라인)이 큰 문자열을 #TinteiroGENERO : 검정 잉크 카트리지 재활용 #
TinteiroQUANTIDADE : 23 #
FIMPROD 번호
TinteiroID : 4 #
TinteiroLABEL : HP 51,633 M #
TinteiroREF : 51,633 M #
TinteiroMARCA : HP 번호
TinteiroGENERO : 검정 잉크 카트리지 재활용 #
TinteiroQUANTIDADE : 12 #
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#
)
:
TinteiroID:[only numbers]#
TinteiroLABEL:[any character, except "#"]#
TinteiroREF:[any character, except "#"]#
TinteiroMARCA:[any character, except "#"]#
TinteiroGENERO:[any character, except "#"]#
TinteiroQUANTIDADE:[only numbers]#
FIMPROD#
그런 다음 배열에 각 splited 문자열을 추가 다음 각 for 루프는 배열의 모든 객체에이 갈 것입니다. 다른 RegExpression에서 [0] [1] ...
는 값을 수집하고 그 값으로 뭔가를 할 수 있습니다.
: 조언에 따라:
예는 "지저분한"하고는 많은 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);
: 이 코드를했던 것 691,363,210
는 각각 "#의 FIMPROD"각각의 구분의 끝에있는에 big_string을 분할합니다.
는 이제 배열에 가서, 거기에 각각의 값을 가지고있다. 그것으로 무언가를.
나는 그것을 지금 시도 할 것이다. 나는 그럭저럭 할 수있는 일을 게시 할 것이다.
나에게 좋을 것 같습니다. 가장 간단한 방법이 가장 좋습니다. – pavium