Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]preg_match_all - przykład, prośba o wyjaśnienie działania wyrażeń regularnych
Masterson
post 21.02.2013, 18:35:59
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 18.07.2011

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


Witam.

Mam następujący ciąg (nazwa opony):
Barum 215/75 R17.5 BT43 [135/133] J TL

Chcę wydobyć szerokość opony (215).

Zrobiłem tak:
  1. <?php preg_match_all( '@[ ].*?[/][0-9]{2}[ ]@', 'Barum 215/75 R17.5 BT43 [135/133] J TL', $res);?>


Tablica $res ma taką zawartość:
  1. Array ( [0] => Array ( [0] => 215/75 ) )


Niby coś zwraca, ale za dużo. Jedyna wartość jaką chcę uzyskać w wyniku zastosowania funkcji to 215.

Mam prośbę aby ktoś z Was naprostował mój, zapewne błędny, tok rozumowania.
To co wiem (a raczej wydaje mi się, że wiem):
@ - zaczynam wyrażenie
[ ] - spacja poprzedzająca liczbę 215
.*? - to chcę wyciągnąć z ciągu (215)
[/] - element stały ciągu
[0-9]{2} 2 cyfry
[ ] spacja kończąca interesującą mnie część ciągu

Zakładam, że całe moje rozumowanie jest błędne i proszę doświadczone osoby na nakierowanie na prawidłowe myślenie.
Czy .*? oznacza część ciągu, która zostanie zwrócona do tablicy? Jeśli nie to w jaki sposób oznaczyć miejsce tego, co chcę uzyskać?
Czy preg_match_all zwraca wszystko oznaczone .*? (lub innym znakiem), a jednocześnie znajdujące się w środku znaków określonych przez wyrażenia regularne "z lewej i prawej" strony?
Chodzi o to czy wyrazenie_z_lewej([ ]) czy_tutaj_jest_to_co_uzyskam wyrażenie_z_prawej([/][0-9]{2}[ ]) zwróci czy_tutaj_jest_to_co_uzyskam?

Jak poprawnie zapisać wyrażenie ujęte w przykładzie aby zwróciło wartość 215?
Z góry dziękuję za pomoc.
Pozdrawiam Łukasz

Ten post edytował Masterson 21.02.2013, 18:39:29
Go to the top of the page
+Quote Post

Posty w temacie
- Masterson   [PHP]preg_match_all - przykład   21.02.2013, 18:35:59


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: 14.08.2025 - 04:21