2016-11-23 2 views
1

I eine Zeichenfolge wie folgt zusammengesetzt sind:Explodieren einer Zeichenfolge zweimal

87||1|nuovo#88||4|#209|||#89|||#41||1|#5|||#3||1|116#20|||#13||3|#148||| 

Das Muster ist:
Id1|Mq1|Q.ta1|Tipo1#Id2|Mq2|Q.ta2|Tipo2#Id3|Mq3|Q.ta3|Tipo3 und so weiter ...

Grundsätzlich durch "jedes Element hat Attribute 4 getrennt | " und jedes Element wird durch "#" getrennt

Ich müsste die Zeichenfolge explodieren, um einzelne Variablen für die Attribute jedes Elements zu haben.

Was jetzt bin ich hier:

<?php 
$str = "87||1|nuovo#88||4|#209|||#89|||#41||1|#5|||#3||1|116#20|||#13||3|#148|||#36|||91#29|||68"; 
$caratteristica = print_r (explode("#",$str)); 
?> 

Was mich dieses Ergebnis gab:

Array ([0] => 87||1|nuovo [1] => 88||4| [2] => 209||| [3] => 89||| [4] => 41||1| [5] => 5||| [6] => 3||1|116 [7] => 20||| [8] => 13||3| [9] => 148||| [10] => 36|||91 [11] => 29|||68) 

ich vier Variablen für jedes Element dieses Arrays
(so etwas wie $id[], $mq[],$qt[],$tipo[]) bräuchten .

+0

Schrecklich !! Warum machst du dein Leben nicht einfacher und speicherst Daten in der DB als Zeilen? –

+0

Leider ist dies ein Teil einer XML-Datei, die ich bekomme und ich muss es so importieren wie es ist ... –

Antwort

1
<?php 
$input = '87||1|nuovo#88||4|#209|||#89|||#41||1|#5|||#3||1|116#20|||#13||3|#148|||'; 
$items = explode('#', $input); 
$result = []; 
# or $id = $mq = $qr = $tipo = []; 
foreach ($items as $i) { 
    list($id, $mq, $qr, $tipo) = explode('|', $i); 
    $result[] = ['id' => $id, 'mq' => $mq, 'qr' => $qr, 'tipo' => $tipo]; 
    # or $id[] = $id; $mq[] = $mq; $qr[] = $qr; $tipo[] = $tipo; 
} 
+0

Vielen Dank für Ihre Hilfe. Dein Code hat gut funktioniert! –

0

Sicht ändern zu Jiris Code.

Ersetzen Sie diese Zeile

list($id, $mq, $qr, $tipo) = explode('|', $i); 

mit

list($id[], $mq[], $qr[], $tipo[]) = explode('|', $i); 
0

Versuchen Code folgende

$str = "87||1|nuovo#88||4|#209|||#89|||#41||1|#5|||#3||1|116#20|||#13||3|#148|||#36|||91#29|||68"; 
$caratteristica = explode("#",$str); 

foreach ($caratteristica as $value) { 
list($id[], $mq[], $qr[], $tipo[]) = explode('|', $value); 
} 

// For check the result 
echo "<pre/>"; 
print_r($id); 

print_r($mq); 

print_r($qr); 

print_r($tipo); 

ich Antwort folgende bekam

Array 
(
    [0] => 87 
    [1] => 88 
    [2] => 209 
    [3] => 89 
    [4] => 41 
    [5] => 5 
    [6] => 3 
    [7] => 20 
    [8] => 13 
    [9] => 148 
    [10] => 36 
    [11] => 29 
) 
Array 
(
    [0] => 
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => 
    [7] => 
    [8] => 
    [9] => 
    [10] => 
    [11] => 
) 
Array 
(
    [0] => 1 
    [1] => 4 
    [2] => 
    [3] => 
    [4] => 1 
    [5] => 
    [6] => 1 
    [7] => 
    [8] => 3 
    [9] => 
    [10] => 
    [11] => 
) 
Array 
(
    [0] => nuovo 
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => 116 
    [7] => 
    [8] => 
    [9] => 
    [10] => 91 
    [11] => 68 
) 
+0

Vielen Dank für Ihre Hilfe –

Verwandte Themen