Vinzenz Mai: Ami-Zahlen und preg_match

Beitrag lesen

Hallo,

  1. Ich habe in zwei Strings jeweils eine Zahl in amerikanischem Zahlenformat.

10,520 u. 9,400

Ich möche mit diesen beiden Zahlen rechnen. Einfach z.Bsp. 10,520 / 9,400.
Leider kommt 1,1111 raus. Was sicherlich an dem Komma liegt.

ja

Ich habe zuerst versucht das Komma mit strg_replace zu entfernen, aber dann passiert gar nichts.

das ist aber der richtige Weg.

Auch number_format($string, 2, '.', '')/number_format($string2, 2, '.', ''); hat nicht geholfen.

das ist kein Wunder. number_format formatiert Zahlen als String.

Was muss ich tun/verwenden um mit diesen beiden Zahlen rechnen zu können?

Mit str_replace die Kommata entfernen, anschließend

- die implizite Konvertierung nutzen
 - explizit umwandeln, sei es mit der entsprechenden Funktion, per Cast, oder Typ-Festlegung. Wie Du siehst, gibt es viele Möglichkeiten.

Ich brauche das Ergebnis mit 2 Nachkommestellen.

Sorge dafür, dass das *Ergebnis* die zwei gewünschten Nachkommastellen. Für diese Aufgabe gibt es mehrere Funktionen, eine hast Du bereits selbst genannt.

Ich sollte vielleicht erwähnen, das es auch durchaus sein kann, das der String keine 1000er zahl enthalten kann (bspw. 980)

Das macht für str_replace keinen Unterschied, es werden null Vorkommen ersetzt.

  1. Mein nächstes Problem ist das "parsen" einer bestimmten Info aus einer Webseite. Probiert habe ich es so:

if (preg_match('%.*Win' /></dt>
                <dd>(.*?)</dd>%s', $inhalt, $b)) {
    $wins = $b[1];
}

Schau Dir mit var_dump den Inhalt von $b an.

Der Code der Quelle(Webseite) sieht wie folgt aus:

<dt><img src="http://www.domains.com/winner/win.gif" alt='Win' /></dt>
                <dd>50</dd>

Was mache ich da falsch?

Deine Vorstellung des Ergebnisses stimmt nicht mit dem Ergebnis überein :-)
Es ist eine elementare Debugging-Technik, sich den Inhalt von Variablen anzeigen zu lassen, die nicht das enthalten, was man erwartet.

Freundliche Grüße

Vinzenz