Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
AdBlock
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
matiit
\d\d\d\s
? Jsowe - bo miałem pod ręką.. ale ogólnie dopasuj liczba liczba liczba spacja
AdBlock
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
matiit
Ale zobacz jak prosto można to zrobić... (kliknij po prawo w preg_match_all)
http://www.phpliveregex.com/p/3B3
abjk
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. */


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.