Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]preg_match - problem z ułożeniem wyrażenia regularnego
kuba_pilach
post
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


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. ?>


Ten post edytował kuba_pilach 20.08.2011, 10:33:24
Go to the top of the page
+Quote Post
Lorens
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 1
Dołączył: 19.08.2011

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


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. ?>
Go to the top of the page
+Quote Post
kuba_pilach
post
Post #3





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


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...

Ten post edytował kuba_pilach 20.08.2011, 14:21:02
Go to the top of the page
+Quote Post
Lorens
post
Post #4





Grupa: Zarejestrowani
Postów: 6
Pomógł: 1
Dołączył: 19.08.2011

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


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;


Ten post edytował Lorens 20.08.2011, 16:28:46
Go to the top of the page
+Quote Post
kuba_pilach
post
Post #5





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


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
Go to the top of the page
+Quote Post
Lorens
post
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 1
Dołączył: 19.08.2011

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


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

Ten post edytował Lorens 20.08.2011, 19:39:00
Go to the top of the page
+Quote Post
kuba_pilach
post
Post #7





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


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

Ten post edytował kuba_pilach 20.08.2011, 19:42:44
Go to the top of the page
+Quote Post
Lorens
post
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 1
Dołączył: 19.08.2011

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


Może tak?
  1. preg_match("#(.*?)Treść#", $subject, $result);
  2. echo $result[1];

Nie wiem czy to dobrze, jestem początkujący.
Go to the top of the page
+Quote Post
kuba_pilach
post
Post #9





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


Twój kod pokazał mi cały tekst ze zmiennej...
Ale dzięki za chęci...
Go to the top of the page
+Quote Post
Lorens
post
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 1
Dołączył: 19.08.2011

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


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];
Go to the top of the page
+Quote Post
r4xz
post
Post #11





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


pattern: /Nadawca\:[0-9 ]+(.+)Treść\:/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 30.09.2025 - 14:28