Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamiana działania matematycznego zawartego w zmiennej tekstowej na wynik liczbowy.
Forum PHP.pl > Forum > PHP
dellfio
Znacie panowie funkcję która zamieni zmienną tekstową, w której zapisane jest działanie arytmetyczne na zmienną liczbową, która jest wynikiem tego działania?
Chodzi o coś w rodzaju settype(), tyle żeby tolerowało operatory arytmetyczne.

Przykład:
  1. <?php
  2. $czas="123 dni 12 godz";
  3. $mnozenie=preg_replace(array('/dni/','/godz/'),array('*3600*24+','*3600'),$czas);
  4. settype($mnozenie,"int");
  5. ?>


W powyższym przykładzie chcę zamienić słowa na mnożniki, by uzyskać zadany czas w sekundach.
Niestety funkcja settype() obcina wszystko co znajduje się po ostatniej cyfrze więc znak mnożenia i wszystko co po nim zostaje usunięte.
Czy można to zrobić jednym słowem czy trzeba pisać funkcję na preg_match'u?
starach
To będzie chyba tak.
  1. <?php
  2. $czas = "123 dni 12 godz";
  3. $mnozenie = preg_replace(array('/dni/','/godz/'),array('*3600*24+','*3600'),$czas);
  4. $wynik = eval('return '.$mnozenie.';');
  5. var_dump($mnozenie);
  6. var_dump($wynik);
  7. ?>
Wynik:
Kod
string '123 *3600*24+ 12 *3600' (length=22)
int 10670400
Oczywiście może istnieć jeszcze prostsze rozwiązanie eliminujące użycie funkcji eval()
dellfio
Bardzo ładna akrobacja smile.gif
Serdeczny thanx orglee winksmiley.jpg
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.