Antworten auf deine Fragen:
Neues Thema erstellen

PHP einen String in Spalten und Zeilen zerlegen

hey_jo

Noch nicht viel geschrieben

Moin, ich bekomme einen Soap-Call mit einer Top10-Liste in einem String. Die Verbindung steht. Der String wird als ein Datensatz ausgegeben. Die Spalten werden mit ";" und die Zeilen mit "|" getrennt. (Partner1;Müller;100|Partner2;Maier;200|). Diesen will ich erst in Spalten und dann in Zeilen zerlegen. Also Spalte Nummer: Partner1, Spalte Name: Müller, Spalte Punkte: 100 --> nächste Zeile.

Bis jetzt konnte ich diesen jedoch nur nach Wörter trennen, mittels Schleife und dem Semikolon-Separator

PHP-Code:
<?php
//Zeichenkette erstellen
$text = $result[0]; //Result0, mein Soap-Call

//Erstes Vorkommen des Simikolon ermitteln
$i = strpos($text, ";");
//solange ein Semikolon vorhanden ist
while ($i) {
//Das Wort am Anfang von Text ausgeben
echo substr($text, 0, $i)."<br/><tr/>";
//Text um das ausgegebene Wort kuerzen
$text = substr($text, $i + 1);
//neue Position fuer das Semikolon ermitteln
$i = strpos($text, ";");
}
//Das letzte Wort hat keine Semikolon mehr, daher extra ausgeben.
echo $text;

?>

Wer kann mir weiterhelfen, bin für jede Hilfe dankbar.

Viele Grüße

hey_jo
 

Thyras

Nicht mehr ganz neu hier

AW: PHP einen String in Spalten und Zeilen zerlegen

Nicht so kompliziert machen! ;)

Sofern ich dich richtig verstanden habe, wäre das ein möglicher Weg:

PHP:
$string = "Partner1;Müller;100|Partner2;Maier;200|";
$zeilen = explode("|", $string);
$result = array();

foreach($zeilen as $i => $zeile) {
    if(!empty($zeile)) {
        $spalte = explode(";", $zeile);
        $result[$i] = array('Nummer' => $spalte[0], 
                            'Name' => $spalte[1], 
                            'Punkte' => $spalte[2]);
    }
}

In $result stände danach:

PHP:
Array
(
    [0] => Array
        (
            [Nummer] => Partner1
            [Name] => Müller
            [Punkte] => 100
        )

    [1] => Array
        (
            [Nummer] => Partner2
            [Name] => Maier
            [Punkte] => 200
        )

)
 

hey_jo

Noch nicht viel geschrieben

AW: PHP einen String in Spalten und Zeilen zerlegen

Super Thyras, danke - hat funktioniert. Über echo spalte 1, 2 oder 3 hole ich Nummer, Name und Punkte aus der letzen Zeile getrennt nach Spalten des Top10-Strings rein.

Wie kann ich nun den 9, 8, 7 ,6 usw. Datensatz (Teilstring) darstellen??
 

Thyras

Nicht mehr ganz neu hier

AW: PHP einen String in Spalten und Zeilen zerlegen

Ich versteh' deine Frage nicht. :uhm:

Du hast doch jetzt alles fein säuberlich zerlegt in Arrays verfügbar. Was willst du denn wie anzeigen bzw. welche Informationen fehlen?
 

hey_jo

Noch nicht viel geschrieben

AW: PHP einen String in Spalten und Zeilen zerlegen

// Gebe Top1

echo "<tr bgcolor='#EDEDED'><td width='33%' align='left'>".$spalte[0]."</td>

<td width='33%'>".$spalte[2]."</td>

<td width='33%'>".$spalte[1]."</td></tr>";

// Tabellenfuß

echo "</table>";

Damit wird dargestellt: Partner10;Mustermann;50
Ich will jetzt in der nächsten Zeile auch Partner1 Müller und Partner2 Maier und die Anderen ausgeben.

Die Top10 hole ich mit:

// NUSoap wird benoetigt, um die Verbindung
// herzustellen.
require('nusoap.php');
// SOAP-Call vorbereiten
$s = new nusoapclient($server.'/bla/bla/Carer');
// Liste der abzufragenden Felder setzen.
$fields = array(1 => 'Top10_EP', // Top10 nach eigenen Provisionen
2 => 'Pokal_EP'); // Pokalincentive nach Teamprov
// Aufruf des Dienstes
$result = $s->call('getCarer', $parameters);
// Ergebnis auswerten
if (! $err = $s->getError()) {
}

Wie kann ich nun die Spalten aus array 2,3, usw. ausgeben.

Sorry, das ist mein erster PHP-Skript, deswegen soviel Unverständnis :)
 

netbandit

Aktives Mitglied

AW: PHP einen String in Spalten und Zeilen zerlegen

Also wenn Du nichts sortieren musst, bzw. die Reihenfolge unverändert bleibt und die Daten immer 3 Spalten beinhalten, langt auch folgendes:

PHP:
<?php
$string = 'Partner1;Müller;100|Partner2;Maier;200|';
$string= preg_replace('/^(;|\|)|(;|\|)$/s', '', $string);
$string= str_replace(';', '</td><td>', $string);
$string= str_replace('|', '</td></tr><tr><td>', $string);
echo '<table border="1">
       <tr>
       <td>';
echo $string;
echo '</td>
      </tr>
      </table>';
?>
 

hey_jo

Noch nicht viel geschrieben

AW: PHP einen String in Spalten und Zeilen zerlegen

Perfekt, alle Daten werden nun absteigend nach Punkten sortiert angezeigt :), sogar die vierte Spalte, Vorname, die ich vergaß zu erwähnen, wird angezeigt.

Meine Tabelle sieht nun so aus:
ID Punkte Name Vorname
1 100 Müller Max

Der Fall wäre für mich erledigt, wenn das Ergebnis so aussehen würde:

ID Name Vorname Punkte
1 Müller Max 100

Trotzdem, vielen, vielen Dank!!!!
 

hey_jo

Noch nicht viel geschrieben

AW: PHP einen String in Spalten und Zeilen zerlegen

Definitiv 4 Werte pro Zeile. Mit deinem Code werden auch alle 4 Werte ausgegeben, nur das ich die Spalte 2 (Punkte) unbedingt ganz am Ende rechts brauche. Also als letzte Spalte
 

netbandit

Aktives Mitglied

AW: PHP einen String in Spalten und Zeilen zerlegen

Nee, dann mach das doch lieber über Arrays, dann kannst Du die Daten rumschieben wie Du es brauchst:

PHP:
<?php
$string = '|Partner1;hans;Müller;100|Partner2;peter;Maier;200;';
$string= preg_replace('/^(;|\|)|(;|\|)$/s', '', $string);
$string=explode('|', $string);
if(count($string)>=1){
   echo '<table border="1">';
   foreach($string as $zeile){
           $spalte=explode(';', $zeile);
           // spalte[0];spalte[1];spalte[2];spalte[3]
           if(count($spalte)==4){
              echo '<tr>';
              echo '<td>' . $spalte[0] . '</td>';
              echo '<td>' . $spalte[1] . '</td>';
              echo '<td>' . $spalte[2] . '</td>';
              echo '<td>' . $spalte[3] . '</td>';
              echo '</tr>';
           }
   }
   echo '</table>';
}
?>
 

hey_jo

Noch nicht viel geschrieben

AW: PHP einen String in Spalten und Zeilen zerlegen

Vielen Dank an alle und ganz besonders netbandit für die schnelle Hilfe. Das Ergebnis ist einwandfrei!!!

Der Fall ist erledigt.

Viele Grüße hey_jo
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.461
Mitglieder
67.558
Neuestes Mitglied
StarsMan
Oben