Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenie regularne - prośba o konstrukcje
Forum PHP.pl > Forum > Przedszkole
axwell
Potrzebuje podzielić dane z pewnej listy i każdą pozycję umieścić w oddzielnej zmiennej. Lista ma taką konstrukcję:

1.X tresc tresc tresc tresc [ZOBACZ]
2.Y tresc tresc tresc tresc [ZOBACZ]
3.Z tresc tresc tresc tresc [ZOBACZ]

Pierwszy znak to zawsze liczba (maksymalnie 20). Druga jest zawsze kropka. Natomiast na trzeciej pozycji zawsze jest duża litera (bez polskich znaków). Cala pozycje zakańcza wyraz '[ZOBACZ]'

Dzielić chcę za pomocą preg_match_all
k_@_m_i_l
Cytat(axwell @ 19.05.2012, 10:43:43 ) *
Dzielić chcę za pomocą preg_match_all


No to chciej, nikt Ci nie broni. Pokaż swój kod w czym masz problem, a nie proś o gotowce.
Chyba że chcesz gotowca, to nie ten dział.

axwell
W zasadzie to jaki kod mam pokazać? Mogę pokazać funkcje i wypisać to co wiem.

Otóż:

  1. preg_match_all('[wyrazenie regularne]',$input,$output)


Według mojego pierwszego posta wiem, że:
dla pierwszej cyfry wyrażenie będzie [1-9]
dla kropki będzie to po prostu kropka ? [.]
dla 3 znaku będzie [A-Z]
wyraz zakańczający [ZOBACZ]

wychodzi coś takiego:
  1. preg_match_all('[1-9].[A-Z]$[ZOBACZ]',$input,$output)


Pytania brzmią:
1. Jak połączyć to w całość? Jakich znaków do łączenia używać?
2. Dla pierwszego znaku może być liczba dwucyfrowa, czyli jak mam to zdefinować? [1-9] czy może [1-9][0-9] ?
!*!
Cytat(axwell @ 19.05.2012, 19:18:51 ) *
Pytania brzmią:
1. Jak połączyć to w całość? Jakich znaków do łączenia używać?
2. Dla pierwszego znaku może być liczba dwucyfrowa, czyli jak mam to zdefinować? [1-9] czy może [1-9][0-9] ?


1. tzn?
2. ([0-9]{1,2})

dla "3.Z tresc tresc tresc tresc [ZOBACZ]" powinno być coś mniej więcej
Cytat
/([0-9]{1,2}).([A-Z]{1})([a-zA-Z\s])[ZOBACZ]/
sazian
a guzik prawda
1. kropka to element wyrażenia czyli musi być \. a nie .
2. ([A-Z]{1}) domyślnie jest jeden więc po co to dawać ?
3. ([a-zA-Z\s]) dokładnie jeden z tych znaków
4. i na koniec perełka [ZOBACZ] czyli jedna z tych liter

poprawne wyrażenie
Kod
([0-9]{1,2})\.([A-Z])([\w\s]+)\[ZOBACZ\]


polecam stronę do testowania wyrażeń http://erik.eae.net/playground/regexp/regexp.html
!*!
Dlatego napisałem mniej więcej, a nie że to na 100% poprawne. Nie musisz używać \ dla elementów które są poza grupą.
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.