Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie w stringu.
Forum PHP.pl > Forum > PHP
krzysiu99995
Witam, mam pytanie. Jak najlepiej przeprowadzić dodawanie w stringu? Np mam zmienna z taką zawartością Ania kupowała 5+2 bułek. Jak to zamienić na Ania kupowała 6 bułek. Tak sobie myślałem o sscanf, ale pomyślałem że zapytam może ktoś wpadnie na lepszy pomysł.
Fifi209
Cytat(krzysiu99995 @ 27.01.2012, 00:12:53 ) *
Ania kupowała 5+2 bułek. Jak to zamienić na Ania kupowała 6 bułek

Złodziej. Czemu chcesz ani ukraść bułkę? Głodny jesteś? biggrin.gif
Uriziel01
W tym przypadku idealnie Twój problem rozwiążą wyrażenia regularne (preg_match). Możesz nawet sprawdzać jaki znak jest pomiędzy liczbami aby wykonać odpowiednie działanie.
krzysiu99995
Cytat(Fifi209 @ 27.01.2012, 00:16:34 ) *
Złodziej. Czemu chcesz ani ukraść bułkę? Głodny jesteś? biggrin.gif

Oh, przepraszam. Byłem głodny i śpiący. tongue.gif

Cytat(Uriziel01 @ 27.01.2012, 07:14:18 ) *
W tym przypadku idealnie Twój problem rozwiążą wyrażenia regularne (preg_match). Możesz nawet sprawdzać jaki znak jest pomiędzy liczbami aby wykonać odpowiednie działanie.


Dziękuje ślicznie. Zorientuje się jak tego używać, bo nigdy nie próbowałem.

Pozdrawiam!
Uriziel01
Tzn. oczywiście dzięki preg_match znajdziesz te liczby oraz je do siebie dodasz, ale aby natomiast podmienić je w tym stringu na nową wartość musisz użyć preg_replace. Nie wiem czemu w pierwszym poście o tym nie wspomniałem.
krzysiu99995
Dzięki kolego! Ale jak mam wyszukać ciąg liczba+liczba? w sscanf wyglądałoby to tak %d+%d. I jeśli będzie parę tych dodawań, to użyje chyba preg_match_all ().
Tylko problem do czego do zapisywać? Do tablicy? Trochę brak mi pomysłu na tę funkcje. biggrin.gif
pyro
  1. $text = 'Ania kupiła 5+7 bułek'
  2. preg_match('|(\d+)\+(\d+)|', $text, $matches);
  3. $number = intval($matches[1]) + intval($matches[2]);
  4. $changed_text = str_replace($matches[0], $number, $text);
  5. echo $changed_text;
krzysiu99995
Wszystko działa, ładnie pięknie na integerach. Porobiłem na petlach, zliczanie, etc. A ma ktoś pomysł na liczby float?

Nie wiem dlaczego, ale jeśli zamienię d na f, w ogóle nie wykrywa liczb float. ;x

To wyżej śmiga, a to już nie:
Kod
preg_match('|(\f+)\+(\f+)|', $text, $matches);
Uriziel01
\d nie oznacza tutaj int'a a jedynie cyfry od 0 do 9, po prostu możesz go zastąpić poprzez [0-9\.]
krzysiu99995
Dzięki wielkie. Co język to inaczej.


Dziękuje kolegom programistom. wink.gif
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.