protected
Goto Top

Explode, split - String teilen und in Table mit for-schleife

Hallo,

ich habe folgendes Problem: Ich würde gerne folgenden String teilen:

.com Domain#8,00|2#.net Domain#5,50|5#.de Domain#4,00|1#.org Domain#7,00|6


Format: Produkt#Preis|Menge# bei der letzten Position kommt das # weg zum abschluss..
Hierbei ist zu beachten, dass es nachher in eine HTML Tabelle gefüllt werden soll, also wie eine for schleife.

Sprich

Produkt Anzahl Preis
.com Domain 2 8,00
.net Domain 5 5,50 ...

Ich komme nicht auf die Lösung. Die Strings auseinander nehmen ist nicht so das Problem wohl eher eine for Scheife die immer ein neues <tr><td>... anlegt für eine neue Position

Danke!

Content-ID: 302393

Url: https://administrator.de/forum/explode-split-string-teilen-und-in-table-mit-for-schleife-302393.html

Ausgedruckt am: 27.12.2024 um 19:12 Uhr

nxclass
Lösung nxclass 20.04.2016 um 23:24:24 Uhr
Goto Top
Hi, arbeite hier am besten mit preg_match_all, dann hast du alle Werte gleich in einem Array was dann einfach zu verarbeiten ist.

$string = '.com Domain#8,00|2#.net Domain#5,50|5#.de Domain#4,00|1#.org Domain#7,00|6';  
$matches = array();

if (preg_match_all( '/([^#]+)\#([0-9,]+)\|([0-9]+)*/', $string, $matches, PREG_SET_ORDER)) {  
    echo '<table>';  
    foreach ($matches as $row) {
        echo '<tr>';  
        echo '<td>'.$row[1].'</td>';  
        echo '<td>'.$row[2].'</td>';  
        echo '<td>'.$row[3].'</td>';  
        echo '</tr>';  
    }
    echo '</table>';  
}
Protected
Protected 20.04.2016 um 23:39:55 Uhr
Goto Top
danke - genau das war es
Protected
Protected 21.04.2016 um 10:36:48 Uhr
Goto Top
Hallo,

leider funktioniert das Script nicht immer.

z.B. wenn ich diesen String übergebe: Web#5.30|1#hosting.de#4.00|1
füllt er nicht die Tabelle, also diese bleibt leer. Jemand ne idee?
nxclass
Lösung nxclass 21.04.2016 um 14:05:49 Uhr
Goto Top
Hi, hier musst du den RegA anpassen da Du keine , sondern . verwendest:
// '/([^#]+)\#([0-9,]+)\|([0-9]+)*/' zu 
// '/([^#]+)\#([0-9,\.]+)\|([0-9]+)*/' (ungetestet)