[Проверьте мой 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#";
Я думаю, мне нужно 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
.
Кто-нибудь может подсказать, как этого добиться?
Спасибо
EDIT:
Я пытаюсь объяснить свою логику.
У меня есть большая строка (без строки разрыва):
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 строки поменьше.
С 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#
Затем добавьте каждую разделенную строку в массив:
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#
)
И затем для каждого цикла будет входить каждый объект в массиве. [0] [1] ...
Сделайте еще одно выражение RegExpression, чтобы собрать значения и что-то сделать с этими значениями.
Да, он "грязный" и требует много ресурсов процессора, но .. У меня нет лучшей идеи: S
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#";CB335EE#TinteiroREF:CB335EE#TinteiroMARCA:HP#TinteiroGENERO:Tinteiro Preto Reciclado#TinteiroQUANTIDADE:23#FIMPROD#";
$array = explode("FIMPROD#", $big_string);
print_r ($array);
Он разделяет строку big_string в конце каждого "FIMPROD #" разделителя для каждого.
Теперь у меня есть массив, и для каждого значения в нем. Сделай что-нибудь с этим.
Я попробую это сейчас ... Я опубликую что-нибудь, если мне удалось это сделать или нет.