Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenie regularne
AdBlock
post 6.02.2014, 19:24:07
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


Mam tekst:
Cytat
Liczby: 982 982 725 2.689/4.490

Wszystkie wartości liczbowe są zmienne (zawierają się w przedziale liczbowym od 0 do kilkuset tysięcy), jednak zawsze są to 3 zwykłe liczby i jedna w formie "x/y"
Chcę wyciągnąć z niego tylko i wyłącznie pierwsze 3 wartości liczbowe, czyli: 982, 982 i 725

Mam taki kod:
  1. preg_match_all ("/Liczby:([0-9\s]{1,})/", $text, $tekst, PREG_PATTERN_ORDER);


Problem w tym, że otrzymuję jako wynik:
  1. (
  2. [0] => Array
  3. (
  4. [0] => Liczby: 982 982 725 2
  5. )
  6.  
  7. [1] => Array
  8. (
  9. [0] => 982 982 725 2
  10. )
  11.  
  12. )

Jak pozbyć się ostatniej liczby w tablicy?
Czy jest możliwe za pomocą wyrażenia regularnego wymuszenie dodania do tablicy tylko 3 pierwszych liczb?

Proszę o pomoc smile.gif

Ten post edytował AdBlock 6.02.2014, 19:24:32
Go to the top of the page
+Quote Post
matiit
post 6.02.2014, 19:47:08
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


\d\d\d\s
? Jsowe - bo miałem pod ręką.. ale ogólnie dopasuj liczba liczba liczba spacja
Go to the top of the page
+Quote Post
AdBlock
post 6.02.2014, 20:05:25
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 26.05.2012

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


Problem udało mi się rozwiązać dzięki zmienieniu kodu na:
  1. preg_match_all ("/Liczby:([.0-9\s]{1,})\s/", $text, $tekst, PREG_PATTERN_ORDER);

czyli dodaniu na końcu spacji.
Wydawało mi się, że wcześniej próbowałem tak robić i nie działało, jednak teraz jest w porządku wink.gif

Dzięki matiit za nakierowanie wink.gif
Go to the top of the page
+Quote Post
matiit
post 6.02.2014, 20:10:12
Post #4





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Ale zobacz jak prosto można to zrobić... (kliknij po prawo w preg_match_all)
http://www.phpliveregex.com/p/3B3

Ten post edytował matiit 6.02.2014, 20:10:38
Go to the top of the page
+Quote Post
abjk
post 8.02.2014, 11:34:52
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 6
Dołączył: 5.04.2013
Skąd: W

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


Albo tak:
  1. $text = 'Liczby: 982 982 725 2.689/4.490';
  2. preg_match_all ("/Liczby:(\s\d\d\d){3}/", $text, $tekst, PREG_PATTERN_ORDER);
  3. var_dump($tekst[0]);
  4. /*
  5. array(1) {
  6.   [0]=>
  7.   string(19) "Liczby: 982 982 725"
  8. }
  9. */


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 - 17:33