Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] preg_replace - łatwe, a trudne
sss
post 5.01.2011, 09:18:38
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 5.01.2011

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


Dzień dobry, cześć i czołem.
Mam taki malutki problem - chcę zamienić w całym dokumencie takie coś:
"312,23 zł" na 312.23 (wyciąć " oraz ' zł' i zamienić ',' na '.', cyfry zostawić bez zmian). Próbuje i próbuje i cały czas, albo zamieniam wszystko na '.', albo nic sie nie dzieje. Juz nie mam siły do tych wyrażeń regularnych. Jak możecie to pomóżcie. Dzięki z góry

ok, takie coś stworzyłem (teraz tylko zostało spacje usunąć)
  1. $tresc = preg_replace('/"(.*?),(.*?)zł"/s', '$1.$2', $tresc);


Ten post edytował sss 5.01.2011, 09:31:28
Go to the top of the page
+Quote Post
emajl22
post 5.01.2011, 09:49:11
Post #2





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


To może trim()?


--------------------
Go to the top of the page
+Quote Post
amii
post 5.01.2011, 11:29:43
Post #3





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Powinno zadziałać. Przy okazji co robi ten modyfikator /s bo nie mogę tego znaleźć w źródłach ?

  1. $pat = '/"(.*?),(.*?)zł"/s';
  2.  
  3. function zamien($matches) {
  4. return $matches[1].'.'.$matches[2];
  5. }
  6.  
  7. $tresc = preg_replace_callback($pat, "zamien()", $tresc);



--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
sweter
post 5.01.2011, 11:36:36
Post #4





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


  1. // tak usuniesz spacje
  2. $zmienna_bez_spacji = str_replace(' ', '', '312,23 zł');
  3.  
  4. // tak zamienisz przecinek na kropkę
  5. $zmienna = str_replace(',', '.', '312,23 zł');



--------------------
Go to the top of the page
+Quote Post
webdice
post 5.01.2011, 14:14:36
Post #5


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. $tresc = preg_replace('#"([0-9]+),([0-9]+) zł"#', '$1.$2', $tresc);
Go to the top of the page
+Quote Post
sss
post 7.01.2011, 13:16:21
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 5.01.2011

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


Ok, dzięki za uwagi. Teraz mam jeszcze jeden problem chcę usunąć ze stringa wszystkie przecinki, które są w cudzysłowiu tzn.
NP. takie coś "dsd,fd,434,aa" na dsdfd434aa

EDIT:
no i jeszcze ma zostawiać nienaruszone takie wpisy: "," (jeden przecinek pomiędzy czudzysłowem)

Ten post edytował sss 7.01.2011, 13:44:45
Go to the top of the page
+Quote Post
amii
post 7.01.2011, 14:14:18
Post #7





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


  1. $path = /[a-z0-9]+[^"],[^"][a-z0-9]+/i;
  2.  
  3. $tresc = preg_replace($path, '', $tresc);
Powód edycji: [webdice]: O bbcode słyszał?


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
sss
post 7.01.2011, 14:37:43
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 5.01.2011

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


Nie działa worriedsmiley.gif
Może źle napisałem, chodzi mi o taką zamianę:

"2a,4ds,wecs","32,aa,dsfdsfdfdf" --> 2a4dswecs,32aadsfdsfdfdf
Go to the top of the page
+Quote Post
webdice
post 7.01.2011, 14:56:21
Post #9


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Nie czekaj na gotowe rozwiązanie, wykaż trochę inicjatywy.
Go to the top of the page
+Quote Post
sss
post 7.01.2011, 15:07:00
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 5.01.2011

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


Cały czas przy tym siędzę :/.

Mam takie cuś, ale to mi wycina wszystko w cudzysłowach
  1. $tresc = preg_replace('/"(.*?)[,][.*?)"/s', '.', $tresc);
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: 22.06.2025 - 22:01