Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Działania matematyczne na tekście
Forum PHP.pl > Forum > Przedszkole
mcfreak
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ł?
Piogola
  1. echo preg_replace('#[^0-9]+#', '', $string) * 3;
mcfreak
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.
Fifi209
Masz jakiś problem z PHP w takim razie skoro z 2 robią się 6.
rzymek01
tu turutu tu tuuuuu:
Cytat
echo preg_replace('#([0-9]+)#e', '\\1*3', '2qwe2');
mcfreak
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.
rzymek01
nie działa, hehe, musisz zrobić sobie żeby brało całą liczbę, wpisz w środku 45 tongue.gif
mcfreak
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.
rzymek01
here you are:
Cytat
<?php
echo preg_replace('#([^0-9]*)([0-9]+)([^0-9]*)#e', '\'\\1\'.(\\2*3).\'\\3\'', '2q45we2ttt90s');
mcfreak
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
rzymek01
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? :]
mcfreak
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.
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.