Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dodawanie w stringu.
krzysiu99995
post 27.01.2012, 00:12:53
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ł.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Fifi209
post 27.01.2012, 00:16:34
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Uriziel01
post 27.01.2012, 07:14:18
Post #3





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Uriziel01 27.01.2012, 07:14:35
Go to the top of the page
+Quote Post
krzysiu99995
post 27.01.2012, 12:16:45
Post #4





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
Uriziel01
post 27.01.2012, 12:51:19
Post #5





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
krzysiu99995
post 27.01.2012, 14:05:16
Post #6





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
pyro
post 27.01.2012, 14:15:27
Post #7





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


  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;


Ten post edytował pyro 27.01.2012, 14:16:03


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
krzysiu99995
post 27.01.2012, 16:04:51
Post #8





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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);


Ten post edytował krzysiu99995 27.01.2012, 16:59:37
Go to the top of the page
+Quote Post
Uriziel01
post 27.01.2012, 16:59:23
Post #9





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


\d nie oznacza tutaj int'a a jedynie cyfry od 0 do 9, po prostu możesz go zastąpić poprzez [0-9\.]

Ten post edytował Uriziel01 27.01.2012, 16:59:45
Go to the top of the page
+Quote Post
krzysiu99995
post 27.01.2012, 17:03:22
Post #10





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dzięki wielkie. Co język to inaczej.


Dziękuje kolegom programistom. wink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:48