Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][regexp] wyciągnięsie liczb ze stringów
TomASS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Witajcie, mam takie stringi:
Cytat
GD. NADL. 4,00
ZAP. NADG. 157,65
GD. NADL. 12,00
DOP. 26,28

itp...


chciałbym aby funkcja zwróciła mi tabelę, gdzie string (jeden z powyższych) będzie podzielony na opis + liczba (np. zwróci tablicę).
Wiem, że powinienem użyć coś z rodziny regexp, ale jakoś po licznych próbach nie potrafię sklecić wyrażenia regularnego :/


--------------------
Go to the top of the page
+Quote Post
abort
post
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


To by było mniej więcej tak (pisane bez testów):
  1. preg_replace ('/(.*)\s([0-9.,])+/', $linia, $tablica);

$linia to jedna linia z tego co zacytowałeś, podzielone rzeczy masz w $tablica
Go to the top of the page
+Quote Post
TomASS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


niestety nie działa sad.gif

bardzo dziwne mam:
  1. preg_replace ('/[0-9]+(\,[0-9]+)?/', $string, $tablica);
  2. echo '<pre>';
  3. print_r($tablica);
  4. echo '</pre>';

gdzie string to:
Cytat
GD.NADL. 4,00

zwraca pustą tablicę :/

testując wyrażenie w http://regexpal.com/
dla:
Cytat
[0-9]+(\,[0-9]+)?

poprawnie mi podświetla 4,00

:/


Ten post edytował TomASS 10.12.2011, 16:43:19


--------------------
Go to the top of the page
+Quote Post
abort
post
Post #4





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


Trochę się pomyliłem. Ma być:
  1. preg_match ('/(.*) ([0-9.,]+)/', $linia, $tablica);

Nie preg_replace (jak podałem), ale preg_match. No i znak "+" ma być w środku nawiasu, a nie poza. Natomiast "print_r" na zmiennej $tablica daje wynik:
Kod
Array
(
    [0] => GD. NADL. 4,00
    [1] => GD. NADL.
    [2] => 4,00
)

Jak widać, indeksy zawierają:
- 0 - cała linia (to, co objął preg_match)
- 1 - to, co objął pierwszy nawias
- 2 - to, co objął drugi nawias
Go to the top of the page
+Quote Post
TomASS
post
Post #5





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Dziękuję - o to chodziło smile.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 Aktualny czas: 22.08.2025 - 05:06