Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]preg_match, wyciagniecie tekstu znajdujacego sie pomiedzy dwoma slowami, absolutnie wszystkiego
fiszol
post
Post #1





Grupa: Zarejestrowani
Postów: 453
Pomógł: 16
Dołączył: 25.05.2004
Skąd: Gorzów Wlkp.

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


Witam
  1. $pattern = "/^Typ(.*)Il/m";
  2.  
  3. $string = "Jakis tam sobie teskt Typ Costam1 Costam2
  4. Il 14 22
  5. bla bla bla";
  6. preg_match($pattern,$string,$match);

Zwraca pustą tablicę, jakiego patternu użyć żeby otrzymać dane wyglądające mniej więcej tak:
Kod
Array
        0 => Array
            0 => Costam1
            1 => Costam2
        1 => Array
            0 => 14
            1 => 22
lub nawet:
Kod
Array
    Costam1 => 14
    Costam2 => 22

Problem prawdopodbnie leży w spacjach/tabach i znakach nowej linii, próbowałem użyć \s ale nie bardzo rozumiem jak to wszystko działa i nic mi nie wyszło. Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Noidea
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Cytat
Potrzebuję wyrażania, które złapie wszystkie "coś tamy" między Typ a Il bez względu na ilość spacji i tabów które mogą się znaleźć pomiędzy nimi

Możesz zrobić to dwoma wyrażeniami. Pierwszym wyciągasz wszystko od słowa Typ do końca linijki (flaga m - multiline). Potem rozdzielasz wyrazy oddzielone przynajmniej jednym białym znakiem:
  1. <?php
  2.  
  3. $string = "Jakis tam sobie teskt Typ Costam1 Costam2
  4. Il 14 22
  5. bla bla bla";
  6.  
  7. $kolejny_string = "Jakis tam sobie teskt
  8. Typ Costam1 Costam2 Cos3
  9. Il 14 22
  10. bla bla bla";
  11.  
  12. $yet_another_kolejny_string = "Jakis tam sobie teskt
  13. Typ Costam1 Costam2 Cos3 Cos4 Cos5
  14. Il 14 22
  15. bla bla bla";
  16.  
  17.  
  18. $matchPattern = "~Typ(.*)$~m";
  19. $splitPattern = "~\s+~";
  20.  
  21. preg_match( $matchPattern, $string, $match );
  22. $result = preg_split( $splitPattern, $match[1], null, PREG_SPLIT_NO_EMPTY );
  23. print_r( $result );
  24.  
  25. ?>



Cytat
Wymyśliłem że mogę zamieniać ewentualne taby na spację, później zrobić explode na 'Typ' i 'Il', później explodować spację i też będę miał w arrayu to co chcę, ale to tylko obejście i ucieczka od regexów. Która metoda wyciągnięcia tych danych będzie wydajniejsza?


Różnica będzie tak mała, że nie ma to znaczenia.
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 01:22