wyrażenie regularne

Odpowiedz Nowy wątek
2011-05-10 19:17

Rejestracja: 8 lat temu

Ostatnio: 8 lat temu

0

Cześć.

Zwracam się z prośbą o pomoc w konstrukcji wyrażenia regularnego dla tekstu[produkt][ImagePath]ścieżka do obrazka[/ImagePath][ToolTip]Opis po wskazaniu na obrazku[/ToolTip][Content1]Tekst nad obrazkiem[/Content1][Content2]Długi <u>opis produktu</u> wraz ze znacznikami <b>html</b>[/Content2][/produkt]

Chcę przy użyciu funkcji preg_replace_callback "posłać" go dalej jako tablicę.
"Wymyśliłem" coś takiego

|\[produkt\](.*?)\[ImagePath\](.*?)\[\/ImagePath\]\s+\[ToolTip\](.*?)\[\/ToolTip\]\s+\[Content1\](.*?)\[\/Content1\]\s+\[Content2\](.*?)\[\/Content2\]\s+\[\/produkt\]|i 

ale to nie działa jak powinno.
Z góry dziękuję za wszelką konstruktywną pomoc.

Edycja:
OK, udało mi sie poprawić wyrażenie regularne i działa
|\[produkt\]\w*(\[ImagePath\](.+?)\[\/ImagePath\]?)(\[ToolTip\](.+?)\[\/ToolTip\]?)(\[Content1\](.+?)\[/\Content1\]?)(\[Content2\](.+?)\[/\Content2\]?)\[\/produkt\]|i
W wyniku powyższego otrzymamy

array(9) {
  [0]=>
  array(2) {
    [0]=>
    string(229) "[produkt][ImagePath]ścieżka do obrazka[/ImagePath][ToolTip]Opis po wskazaniu na obrazku[/ToolTip][Content1]Tekst nad obrazkiem[/Content1][Content2]Długi opis produktu wraz ze znacznikami html[/Content2][/produkt]"
    [1]=>
    string(238) "[produkt][ImagePath]ścieżka do obrazka P2[/ImagePath][ToolTip]Opis po wskazaniu na obrazku[/ToolTip][Content1]Tekst nad obrazkiem P2[/Content1][Content2]Długi opis produktu P2 wraz ze znacznikami html[/Content2][/produkt]"
  }
  [1]=>
  array(2) {
    [0]=>
    string(43) "[ImagePath]ścieżka do obrazka[/ImagePath]"
    [1]=>
    string(46) "[ImagePath]ścieżka do obrazka P2[/ImagePath]"
  }
  [2]=>
  array(2) {
    [0]=>
    string(20) "ścieżka do obrazka"
    [1]=>
    string(23) "ścieżka do obrazka P2"
  }
  [3]=>
  array(2) {
    [0]=>
    string(47) "[ToolTip]Opis po wskazaniu na obrazku[/ToolTip]"
    [1]=>
    string(47) "[ToolTip]Opis po wskazaniu na obrazku[/ToolTip]"
  }
  [4]=>
  array(2) {
    [0]=>
    string(28) "Opis po wskazaniu na obrazku"
    [1]=>
    string(28) "Opis po wskazaniu na obrazku"
  }
  [5]=>
  array(2) {
    [0]=>
    string(40) "[Content1]Tekst nad obrazkiem[/Content1]"
    [1]=>
    string(43) "[Content1]Tekst nad obrazkiem P2[/Content1]"
  }
  [6]=>
  array(2) {
    [0]=>
    string(19) "Tekst nad obrazkiem"
    [1]=>
    string(22) "Tekst nad obrazkiem P2"
  }
  [7]=>
  array(2) {
    [0]=>
    string(80) "[Content2]Długi opis produktu wraz ze znacznikami html[/Content2]"
    [1]=>
    string(83) "[Content2]Długi opis produktu P2 wraz ze znacznikami html[/Content2]"
  }
  [8]=>
  array(2) {
    [0]=>
    string(59) "Długi opis produktu wraz ze znacznikami html"
    [1]=>
    string(62) "Długi opis produktu P2 wraz ze znacznikami html"
  }
}

Moje pytanie teraz jest anstępujące: Jak zmodyfikować wyrażenie regularne aby otrzymać dwie tablice dziewięcioelementowe, a nie tak jak jest teraz czyli dziewięć dwuelementowych.

edytowany 2x, ostatnio: mar1aczi, 2011-05-10 21:11

Pozostało 580 znaków

nav
2011-05-12 17:59
nav

Rejestracja: 16 lat temu

Ostatnio: 3 lata temu

Lokalizacja: Warszawa

0

Pobaw się flagami do preg_match_all.


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0