Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Działania matematyczne na tekście, "100asdaf5" * 2 = "200asdaf10""
mcfreak
post 8.09.2011, 21:25:23
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.01.2009

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


Cześć. Robię pewien skrypcik i nie mam pojęcia jak pomnożyć zmienną, która zawiera oprócz liczb tekst bez usuwania go, chcę go zachować.

Np.
  1. $string = 'loremIpsum 100test15asdafe 1';
  2. echo $string * 3;


zwróci loremIpsum 300test45asdafe 3.

Jest na to jakaś funkcja? Jakiś pomysł?
Go to the top of the page
+Quote Post
Piogola
post 8.09.2011, 21:40:45
Post #2





Grupa: Zarejestrowani
Postów: 151
Pomógł: 36
Dołączył: 1.02.2011
Skąd: Warszawa

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


  1. echo preg_replace('#[^0-9]+#', '', $string) * 3;


--------------------
Google Manual
Go to the top of the page
+Quote Post
mcfreak
post 8.09.2011, 21:54:38
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.01.2009

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


Cytat(Piogola @ 8.09.2011, 22:40:45 ) *
  1. echo preg_replace('#[^0-9]+#', '', $string) * 3;


Niezbyt o to chodzi..

  1. echo preg_replace('#[^0-9]+#', '', '2qwe2') * 3;


zwraca 66 a mi chodzi, żeby zwróciło 6qwe6.

Ten post edytował mcfreak 8.09.2011, 21:55:02
Go to the top of the page
+Quote Post
Fifi209
post 8.09.2011, 21:56:14
Post #4





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

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


Masz jakiś problem z PHP w takim razie skoro z 2 robią się 6.


--------------------
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
rzymek01
post 8.09.2011, 22:04:47
Post #5





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


tu turutu tu tuuuuu:
Cytat
echo preg_replace('#([0-9]+)#e', '\\1*3', '2qwe2');


--------------------
:]
Go to the top of the page
+Quote Post
mcfreak
post 8.09.2011, 22:06:11
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.01.2009

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


Cytat(Fifi209 @ 8.09.2011, 22:56:14 ) *
Masz jakiś problem z PHP w takim razie skoro z 2 robią się 6.


O co ci chodzi? ... Chcę załóżmy zmienną $string = 'foo10bar20'; pomnożyć przez 3 ale tak żeby zachować tekst i żeby output wynosił foo30bar60

rozumiesz -.-?

Cytat(rzymek01 @ 8.09.2011, 23:04:47 ) *
tu turutu tu tuuuuu:



Dzięki, działa.
Go to the top of the page
+Quote Post
rzymek01
post 8.09.2011, 22:07:58
Post #7





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


nie działa, hehe, musisz zrobić sobie żeby brało całą liczbę, wpisz w środku 45 tongue.gif


--------------------
:]
Go to the top of the page
+Quote Post
mcfreak
post 8.09.2011, 22:11:02
Post #8





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.01.2009

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


Cytat(rzymek01 @ 8.09.2011, 23:07:58 ) *
nie działa, hehe, musisz zrobić sobie żeby brało całą liczbę, wpisz w środku 45 tongue.gif


no sprawdziłem ten twój kod biggrin.gif:
  1. echo preg_replace('#([0-9]+)#e', '\\1*3', '2q155we2');


i zwróciło normalnie 6q135we6.
Go to the top of the page
+Quote Post
rzymek01
post 8.09.2011, 22:11:52
Post #9





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


here you are:
Cytat
<?php
echo preg_replace('#([^0-9]*)([0-9]+)([^0-9]*)#e', '\'\\1\'.(\\2*3).\'\\3\'', '2q45we2ttt90s');


--------------------
:]
Go to the top of the page
+Quote Post
mcfreak
post 8.09.2011, 22:15:55
Post #10





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.01.2009

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


Cytat(rzymek01 @ 8.09.2011, 23:11:52 ) *
here you are:


Nie wiem jak u ciebie, ale twój pierwszy kod działa bezproblemowo z liczbami, które są w środku także i działa tak samo jak ten co teraz podałeś :]

  1. function mathText($text, $what = '*1') {
  2. return preg_replace('#([0-9]+)#e', '\\1'.$what, $text);
  3. }
  4. echo mathText('2q45we2ttt90s', '*3').'<br />';
  5. echo preg_replace('#([^0-9]*)([0-9]+)([^0-9]*)#e', '\'\\1\'.(\\2*3).\'\\3\'', '2q45we2ttt90s');


Wychodzi dwa takie same ;d

Tak BTW, w skrypcie na localhoście miałem wpisane 2q45we2ttt90s do testu a chwilę po tym dodałeś post który też zamienia 2q45we2ttt90s snitch.gif Czuję się jakby mnie inwigilowano biggrin.gif

Ten post edytował mcfreak 8.09.2011, 22:18:25
Go to the top of the page
+Quote Post
rzymek01
post 8.09.2011, 22:21:27
Post #11





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


fuck, wydało się tongue.gif

nie wiem czemu działa Ci również pierwszy kod, być może jakieś inne domyslnie ustawienia wyrażeń regularnych, inna wersja php? :]


--------------------
:]
Go to the top of the page
+Quote Post
mcfreak
post 8.09.2011, 22:28:13
Post #12





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.01.2009

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


Cytat(rzymek01 @ 8.09.2011, 23:21:27 ) *
fuck, wydało się tongue.gif

nie wiem czemu działa Ci również pierwszy kod, być może jakieś inne domyslnie ustawienia wyrażeń regularnych, inna wersja php? :]


W PHP.INI nic związanego z wyrażeniami nie zmieniałem, na localhoscie PHP 5.3.5.
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: 26.04.2024 - 19:50