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-Key: 302393

Url: https://administrator.de/contentid/302393

Printed on: April 19, 2024 at 13:04 o'clock

Member: nxclass
Solution nxclass Apr 20, 2016 at 21:24:24 (UTC)
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>';  
}
Member: Protected
Protected Apr 20, 2016 at 21:39:55 (UTC)
Goto Top
danke - genau das war es
Member: Protected
Protected Apr 21, 2016 at 08:36:48 (UTC)
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?
Member: nxclass
Solution nxclass Apr 21, 2016 at 12:05:49 (UTC)
Goto Top
Hi, hier musst du den RegA anpassen da Du keine , sondern . verwendest:
// '/([^#]+)\#([0-9,]+)\|([0-9]+)*/' zu 
// '/([^#]+)\#([0-9,\.]+)\|([0-9]+)*/' (ungetestet)