[PHP] aus einer Zeile Informationen auslesen
-
Es ist im Grunde simpel. Aus einer Variable sollen spezifiische Parts ausgelsen werden.
zB $var1 = "blubberblubber123hahaha678fumfum";
Man weis das blubberblubber, hahaha und fumfum dastehen, kennt aber die Zeichen dazwischen nicht, will sie also kennen.
123 soll dann zB in die variable $zahl1 geladen werden und 678 in die Variable $zahl2.
Dabke schoneinmal im Voraus.
-
<?php $a=array(); $count=0; $str="bfubdv76845dfsvofdbhv9437bfdbvfdb7854fbscbduvd854vbudbu"; for ($i=0;$i<strlen($str);++$i) { if ($str[$i]>="0" && $str[$i]<="9") { $a[$count].=$str[$i]; $b=1; } else if ($b==1) { ++$count; $b=0; } } ?>
Jetzt stehen die Zahlen im Array "$a".
-
du müsstest das noch etwas genauer erklären - evtl. über einen regulären Ausdruck oder substr
-
Ich würde die bekannten Zeichenketten im String durch ein definiertes Zeichen mittels str_replace() erstetzen und den erhaltenen Reststring dann mit explode in ein Array schreiben. In diesem Array sollten dann deine Zahlen stehen.
So in etwa:
$var1 = "blubberblubber123hahaha678fumfum"; $strings=array("blubberblubber","hahaha","fumfum"); for ($i=0;$i<3;$i++) { $var1=str_replace($strings[$i],"|",$var1); } $zahlen=explode("|",$var1);
-
Also ich glaube nicht, dass er die Zeichen dazwischen wirklich kennt, ich glaub er hat es nur als Beispiel so dahingeschrieben... Hier nochmal mein Code mit Erklärung *gg*:
<?php $a=array(); // Initialisiert ein Array mit unbestimmter Anzahl von Elementen $count=0; $str="bfubdv76845dfsvofdbhv9437bfdbvfdb7854fbscbduvd854vbudbu"; //Das ist unser Ausgangsstring... for ($i=0;$i<strlen($str);++$i) // Geht den ganzen String durch { if ($str[$i]>="0" && $str[$i]<="9") // Guckt nach ob das aktuelle Zeichen eine Zahl ist { $a[$count].=$str[$i]; // Wenn ja, fügt er es dem aktuellen Element hinzu $b=1; // und setzt b auf 1... } else if ($b==1) // b wurde auf 1 gesetzt, damit wir sehen können, wann eine "ganze" zahl zuende ist { ++$count; // und wenn sie zuende, springen wir ein Element vom Array weiter $b=0; // Und dann setzen wir wieder b auf null, sonst werden evtl. mehrere elemente übersprungen. } } ?>
-
Würden sich für solche Aufgaben nicht eher pregs eignen? Also etwas wie
preg_match_all('/([0-9]+)/', $str, $ergebnis, PREG_SET_ORDER);
Hab' das jetzt nur schnell aus dem Kopf zusammengebastelt, es gibt keine Gartantie. Eine for-Schleife erscheint mir da doch schon ein wenig übertrieben.
-
Ich finde, solange ic4rus nicht mal sagt, was genau er überhaupt will brauchen wir uns doch hier nicht darüber den Kopf zerbrechen
-
Nun eigentlich war das nicht so gemeint, ich hatte den Befehl schoneinmal. Irgendetwas sehr simples.
Also als Erstes:
Es müssen keine Zahlen sein es können wirgendwelche Zeichen sein, die man im Voraus kennt.
Also zB
Der Input sieht so aus:
erweblubberagasdsaluluDas Fette kennt man. Nun will man erwe in die Variable $output1 laden und agasdsa in die Variable $output2 laden.
Hat dafür einer einen Codeschnipsel?
Danke schoneinmal im voraus
-
ic4rus schrieb:
Hat dafür einer einen Codeschnipsel?
Das wäre doch etwas zu einfach oder? Aber du kannst alle bekannten Delimiter durch einen einzelnen (z.B. ";") konstanten ersetzen und dann explode() verwenden...
-
hmm geht das nicht irgendwie anders?
ich hatte mal etwas ganz einfaches...
-
über einen preg_match - ansonsten fällt mir nichts ein