Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]preg_match - problem z ułożeniem wyrażenia regularnego
Forum PHP.pl > Forum > Przedszkole
kuba_pilach
Witam,
Potrzebuję ułożyć wyrażenie regularne.
Jest tekst:
Kod
dfjjfakfkddsfklfjlksjflka;djNadawca: 5029123478903456dsafahjkahdasa

I potrzebuję wyciągnąć ten ciąg cyfr. Pomoże ktoś? Wiem, że trzeba użyć preg_matcha. Ale mam problem z samym wyrażeniem regularnym...
Dzięki z góry!

Tak dla ewentualnego wyłowienia błędu dam też kod:
  1. <?php
  2. $subject = "dfjjfakfkddsfklfjlksjflka;djNadawca: 5029123478903456dsafahjkahdasa";
  3. $pattern = 'wyrazenie regularne';
  4. preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
  5. print_r($matches);
  6. ?>
Lorens
O takie coś chodziło?
  1. <?php
  2. $subject = "dfjjfakfkddsfklfjlksjflka;djNadawca: 5029123478903456dsafahjkahdasa";
  3.  
  4. preg_match("#Nadawca: ([0-9]+)#", $subject, $result);
  5.  
  6. echo $result[1];
  7.  
  8. ?>
kuba_pilach
Wielkie dzięki! Ale mam kolejny problem...
W tekście z którego ja mam brać ten numer są spacje co 4 cyfry, lub co 2 różnie...
Da się to jakoś uwzględnić?

Odświeżam...
Lorens
A jakby po prostu po 0-9 dać spacje?

CODE
#Nadawca: ([0-9 ]+)#


Edit:
Jak chcesz mieć same liczby bez spacji to możesz zrobić np. tak

  1. $str = str_replace(' ', '', $result[1]);
  2. echo $str;
kuba_pilach
Ok, dzięki... Wpadłem na to wcześniej, ale zapomniałem napisać ;]
Kolejne pytanko, jak wziąść dane między numerem, a słowem Treść: ?
Przykład:
Kod
PRZELEW WEWNĘTRZNY  - System db easyNET Nadawca: 571910 1048 2216 9958 8236 000 1

PIANKOWSKI JOLANTA ul. Ks.J.Poniatowskiego 6 81-724 SOPOT Treść: obsluga ksiag owa Jolanta Piankowski  

Sopot ul Poniatowskiego 6 miesiac  lipiec
Lorens
Proponuje poczytać coś o wyrażeniach.
Spróbuj może tak: #Treść: ([a-zA-Z ]+)#
Edit: sorki nie doczytałem
Chodzi Ci oto żeby wyciągnąć to?
PIANKOWSKI JOLANTA ul. Ks.J.Poniatowskiego 6 81-724 SOPOT
kuba_pilach
Chyba źle zrozumiałeś...
Mi chodzi o :
Kod
PIANKOWSKI JOLANTA ul. Ks.J.Poniatowskiego 6 81-724 SOPOT

Czyli między numerem a słowem treść.
EDIT: tak
Lorens
Może tak?
  1. preg_match("#(.*?)Treść#", $subject, $result);
  2. echo $result[1];

Nie wiem czy to dobrze, jestem początkujący.
kuba_pilach
Twój kod pokazał mi cały tekst ze zmiennej...
Ale dzięki za chęci...
Lorens
Ostatnie co mi przychodzi do głowy to to:
  1. preg_match("/Nadawca:(.*?)Treść:/", $subject, $result);
  2.  
  3. preg_match("/^([0-9 ]+)([a-zA-Z0-9\.\-\ ]+)/", $result[1], $result2);
  4.  
  5.  
  6. echo $result2[1].'<br />'.$result2[2];
r4xz
pattern: /Nadawca\:[0-9 ]+(.+)Treść\:/
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.