Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] usunięcie spacji przy liczbie
marcinsm
post 14.06.2022, 21:20:40
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 16.05.2003

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


Witajcie, mam wyciąg z banku i wyrażeniem regularnym sobie go podzieliłem, kwota jaką klient wpłaca ma postać: 1 230,00 PLN, zmienna $value = 1 230,00 i nie umiem jej zmienić do postaci bez spacji: 1230,00.
Funkcją $value = str_replace(' ','', $value); nie działa - wynikiem jest dalej 1 230,00, funkcja na pewno działa bo jeśli chce zamienić 0 na np. A to mam 1 23A,AA
Macie jakąś sugestię bo przyznam że pomysły już się skończyły smile.gif


--------------------
-[ GG: 1061448 ]- | Mail: -[marcinsm@interpc.pl ]-
Go to the top of the page
+Quote Post
Salvation
post 14.06.2022, 22:07:26
Post #2





Grupa: Zarejestrowani
Postów: 344
Pomógł: 70
Dołączył: 15.07.2014

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


A jak użyjesz tego?
  1. $value = preg_replace('/\s+/', '', $value);
Go to the top of the page
+Quote Post
viking
post 15.06.2022, 03:05:08
Post #3





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


https://www.php.net/manual/en/function.number-format.php


--------------------
Go to the top of the page
+Quote Post
marcinsm
post 15.06.2022, 07:51:13
Post #4





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 16.05.2003

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


Cytat(Salvation @ 14.06.2022, 23:07:26 ) *
A jak użyjesz tego?
  1. $value = preg_replace('/\s+/', '', $value);

nie działa, dalej mam wyniki:
string(6) "750.00"
string(9) "1 541.00"
string(5) "65.00"
string(5) "65.00"
string(5) "1 230.00"

Cytat(viking @ 15.06.2022, 04:05:08 ) *

z tego co wiem to jest funkcja która daje możliwość zamiany na taki format jaki otrzymuję w wyciągu, jednak nie zamieni mi do formatu bez spacji....


--------------------
-[ GG: 1061448 ]- | Mail: -[marcinsm@interpc.pl ]-
Go to the top of the page
+Quote Post
trueblue
post 15.06.2022, 07:57:20
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Zarówno str_replace jak i preg_replace działają: https://onlinephp.io/c/d1c51
Pokaż swój kod.


--------------------
Go to the top of the page
+Quote Post
viking
post 15.06.2022, 08:11:56
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Cytat(marcinsm @ 15.06.2022, 08:51:13 ) *
z tego co wiem to jest funkcja która daje możliwość zamiany na taki format jaki otrzymuję w wyciągu, jednak nie zamieni mi do formatu bez spacji....

To ciekawe, bo nawet w dokumentacji zaraz pod opisem masz przykład jak to osiągnąć.


--------------------
Go to the top of the page
+Quote Post
marcinsm
post 15.06.2022, 08:16:00
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 16.05.2003

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


Cytat(trueblue @ 15.06.2022, 08:57:20 ) *
Zarówno str_replace jak i preg_replace działają: https://onlinephp.io/c/d1c51
Pokaż swój kod.


tak normalnie mi działa, lecz tu na tym serwerze mi to nie działa smile.gif
  1. $value = str_replace(',','.', isset($matches[$pattern['pvalue']]) ? trim($matches[$pattern['pvalue']]) : '');
  2. $value = trim(str_replace(' PLN','', $value));
  3. $value = preg_replace('/\s+/', '', $value);
  4. $value = str_replace(' ', '', $value);


--------------------
-[ GG: 1061448 ]- | Mail: -[marcinsm@interpc.pl ]-
Go to the top of the page
+Quote Post
gino
post 15.06.2022, 08:19:57
Post #8





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

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


@viking number_format potrzebuje float a wrzucany jest string


edit: co to znaczy "tu na tym serwerze", sprecyzuj

Ten post edytował gino 15.06.2022, 08:26:34
Go to the top of the page
+Quote Post
marcinsm
post 15.06.2022, 09:30:20
Post #9





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 16.05.2003

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


Cytat(gino @ 15.06.2022, 09:19:57 ) *
@viking number_format potrzebuje float a wrzucany jest string


edit: co to znaczy "tu na tym serwerze", sprecyzuj


chodzi mi że skrypt mam odpalony na kilku serwerach i tylko na jednym mam problem... albo ten wyciąg ma zakodowane znaki smile.gif


--------------------
-[ GG: 1061448 ]- | Mail: -[marcinsm@interpc.pl ]-
Go to the top of the page
+Quote Post
trueblue
post 15.06.2022, 09:36:39
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Jeśli miałby zakodowane znaki, to nie działałoby na żadnym serwerze.
Chyba, że na tym jednym pobierasz dane z innego źródła.

Pokaż co zawiera string przed jego jakimikolwiek modyfikacjami, czyli var_dump($wartosc).


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 15.06.2022, 13:17:59
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Zrób sobie

  1. $value = preg_replace('/[^0-9.]/', '', $matches[$pattern['pvalue']]);


i po zawodach
Go to the top of the page
+Quote Post
trueblue
post 15.06.2022, 13:29:13
Post #12





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Cytat(Pyton_000 @ 15.06.2022, 14:17:59 ) *
Zrób sobie

  1. $value = preg_replace('/[^0-9.]/', '', $matches[$pattern['pvalue']]);


i po zawodach

I z wartości: "1 230,00" otrzyma "123000"...


--------------------
Go to the top of the page
+Quote Post
Salvation
post 15.06.2022, 14:18:29
Post #13





Grupa: Zarejestrowani
Postów: 344
Pomógł: 70
Dołączył: 15.07.2014

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


Cytat(trueblue @ 15.06.2022, 10:36:39 ) *
Pokaż co zawiera string przed jego jakimikolwiek modyfikacjami, czyli var_dump($wartosc).

+1
To jest najważniejsza informacja teraz, bo niemożliwe jest to, że podawane powyżej rozwiązania nie działają.
Go to the top of the page
+Quote Post
marcinsm
post 15.06.2022, 14:46:50
Post #14





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 16.05.2003

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


Cytat(Pyton_000 @ 15.06.2022, 14:17:59 ) *
Zrób sobie

  1. $value = preg_replace('/[^0-9.]/', '', $matches[$pattern['pvalue']]);


i po zawodach


no i pięknie ! działa dziękuję bardzo !


--------------------
-[ GG: 1061448 ]- | Mail: -[marcinsm@interpc.pl ]-
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: 27.04.2024 - 16:47