Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]CURL odczyt wartości i zamiana na liczbę jak ?
Forum PHP.pl > Forum > Przedszkole
casperii
Panowie pobieram poprzez curla dwie zmienne:
$koszt = 100.00;
$dostawa = 20.00;
$lacznie = $cena + $dostawa;

  1. if (strpos($n->innertext, "zł") !== FALSE) {
  2. $transport = $n->innertext;
  3. $transport = str_replace('Koszt:' ,'', $transport);
  4. $transport = trim(str_replace('zł', '', $transport));
  5. $transport = str_replace(',' ,'.', $transport);
  6. }


niestety $koszt i $dostawa są prawdopodobnie traktowane jako string, jak zamienić na typ liczbowy bym mógł zsumować te 2 zmienne?
próbowałem int(), number_format(), float().

Ma ktoś jakiś pomysł ?
nospor
Moze pokaz co dokladnie zawiera ten tekst a nie cudujesz na slepo
var_dump
Neutral
Użyj var_dump i sprawdź jaki to ma typ, a co do rzutowania, to chyba tak można, by napisać:

  1. $var= 'string1';
  2. $var = (int) $var;
  3. var_dump($var);


http://php.net/manual/en/ref.var.php

Edit: Nospor mnie ubiegł.
casperii
var_dump($var);
int(0)

var_dump($transport);
string(80)
Neutral
Jeśli w tym osiemdziesięcio-znakowym string'u są białe znaki to może użyj funkcji trim() lub str_replace()?

http://php.net/manual/pl/function.str-replace.php

Napisz też, czy po zrzutowaniu masz int'a, czy nie.
casperii
  1. if (strpos($n->innertext, "zł") !== FALSE) {
  2. $transport = $n->innertext;
  3. $transport = str_replace('Koszt:' ,'', $transport);
  4. $transport = trim(str_replace('zł', '', $transport));
  5. $transport = str_replace(',' ,'.', $transport);
  6. $transport = trim($transport);
  7. }
  8. $var = (int)$transport;
  9. $var2 = $transport;
  10. var_dump($var);
  11. var_dump($var2)


@nospor jakiś pomysł ?smile.gif
int(0)
string(80) " 283.00 "
trzczy
Zmiana na liczbę
  1. filter_var($stringFloat, FILTER_VALIDATE_FLOAT);
casperii
@trzczy twój kod daje:
bool(false)
trzczy
A co zwraca to
  1. var_dump($n->innertext);

Bo $n->innertext jest chyba tekstem wyjściowym.
casperii
zwraca:
string(133) " Koszt: 283,00 zł "

ale powyższe parsuje
  1. $transport = str_replace('Koszt:' ,'', $transport); usuwam koszt:
  2. $transport = str_replace('zł', '', $transport); //usuwam zł
  3. $transport = preg_replace('/\s+/', '', $transport); //usuwam niewidoczne znaki "spacje"
  4. $transport = str_replace(',' ,'.', $transport); //zamieniam przecinek na kropke

trzczy
A tutaj działa:
https://3v4l.org/GIo16
casperii
no widzisz tam działa, a u mnie nie.
Jak na "sztywno" wpisałem sobie
$transport = "283" to twój kod działa, dziwne..
trzczy
Spróbuj sam
bo wtedy bierzesz tylko to, co cię interesuje demo
casperii
preg_match rozwiązał problem. dziękuje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.