PHP String zerpflücken

scue

Cadet 4th Year
Registriert
Aug. 2008
Beiträge
68
Hi, ich habe ein Logik Problem. Ich habe einen etwas längeren Text, da steht dann "

"bla bla bla sdf sdf wer Zahl1: 123,12 dsf we fds Zahl2: 2,02"

ich hätte jetzt gerne die beiden Zahlen herausgefiltert. Ich weiß aber vorher nicht, wie groß die Zahl vor dem Komma ist. Mein Vorgehen nach "zahl1" im String zu suchen, die Position festzustellen und einfach die nächsten 6 Zeichen zu nehmen scheidet daher aus. Und mit einer Schleife zu prüfen, ob das Zeichen ein Integer ist, finde ich ziemlich aufwendig. Muss doch auch einfacher gehen :)

Grüße
 
Hi,

dein Ansatz ist doch schon recht gut. Gehe nur einfach nicht feste 6 Zeichen weiter sondern einfach solange, bis du wieder auf ein Leerzeichen kommst.

Oder wie mein Vorredner schreibt: RegEx.

VG,
Mad
 
Hi,

PHP:
		<?php
			$test = "bla bla bla sdf sdf wer Zahl1: 123,12 dsf we fds Zahl2: 2,02";
			$ausgabe = preg_match("/zahl1/i", $test, $treffer);
			echo $ausgabe."<br>";
			echo $treffer[0];
		?>

gibt mir

1
Zahl1

zurück. Ich verstehe nicht, wie ich den suchfilter anpassen muss. der müsste ja dann in etwa

/zahl1 [0-9]{1-10},[0-9]{1-2}/i lauten. oder so ähnlich jedenfalls. also es müsste dastehen zahl1 dann ein leerzeichenf, dann auf den nächsten 1 bis zehn zeichen die zahlen von 0 bis 9, dann das komma und dann noch zahlen von 0-9 auf den nächsten zwei stellen. allerdings gibt mir mein skript dann nur 0 zurück. wo ist der haken?

grüße und vielen dank
 
Du müsstest preg_match_all verwenden, da du mehr als einen Rückgabewert bekommst. Das ganze liefert dann aber leider ein mehrdimensionales Array (kA ob es auch einfacher ginge). Außerdem fehlt bei dir im Suchmuster ein ':' nach Zahl1/2:
PHP:
<?php

  $str = "bla bla bla sdf sdf wer Zahl1: 123,12 dsf we fds Zahl2: 2,02";
  preg_match_all("/Zahl(1|2): ([0-9]+,[0-9]{1,2})/", $str, $zahlen);

  echo $zahlen[2][0];
  echo "<br>";
  echo $zahlen[2][1];

?>
 
Zuletzt bearbeitet:
Zurück
Oben