Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 19.07.2007 Ostrzeżenie: (0%)
|
Cześć,
Od kilku godzin walczę z wyrażeniami regularnymi i niestety nie mogę sobie poradzić. Muszę z innej strony (za zgodą twórcy) wyłuskać kilka danych (w tym przypadku zdjęć z opisami), kod wygląda (po skróceniu) mniej więcej tak: Liczba takich sekcji <div> jest zmienna, są one oddzielone dodatkowo kodem html, a całość znajduje się oczywiście między <body> a </body>. Przyznam szczerze, że mam problemy nawet z wyborem funkcji, której użyć. Próbowałem preg_match_all, preg_replace oraz preg_split, ale bez efektu. Samo wyrażenie regularne robię w sposób podobny do tego:
Próbuję to wstawiać do preg_match_all, ale nic sensownego mi nie wychodzi, mimo wielu naprawdę prób zmiany. Mogę liczyć na pomoc? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 7.11.2006 Ostrzeżenie: (0%)
|
Kod $zdj=array(); $fragmenty=explode('<div class="photo">'); $c=count($fragmenty); $m=array(); for($x=1;$x<$c;$x++) { // dla wszystkich fragmentów z wyjątkiem zerowego wykonujesz: $znal=ereg( "<a [^>]*><img src="([^>]*)" /></a>[\r\n ]*<p class=\"description\">([^<]*)</p></div>",$fragmenty[$x],$m); ); if($znal) $zdj[]=array('fotka'=>$m[1],'opis'=>$m[2]); } tablica $zdj jest dwuwymiarową tablicą zawierającą fotki z opisami. PS. Twój program nie działał ponieważ .* to dowolne znaki, a wyrażenia regularne zawsze dopasowują najdłuższy pasujący ciąg, tak więc w wynikach lądowały Ci również tagi HTML. Przy rozbiórce HTML (chociaż sam wykonałem podobne zadanie z użyciem explode i działało o niebo szybciej) pamiętaj, aby w ereg stosować ograniczniki [^>] (wszystkie znaki bez znaku większości - wewnątrz tagu HTML) oraz [^<] (wszystkie znaki bez znaku mniejszości - pomiędzy tagami HTML). Niniejsze rozwiązanie nie jest odporne na zmianę kolejności atrybutów wewnątrz tagu. Rozwiązanie może zawierać drobne błędy widoczne na etapie parsowania/kompilacji - nie testowałem go z powodu braku czasu i motywacji (z uwagi, że nawet linka na tym nie zarabiam), ale powinno działać. |
|
|
|
nilo PCRE - wyłapanie treści ze strony 19.07.2007, 18:29:51
1010 I tutaj takie pytanie? Czy jak zastosujemy explode... 20.07.2007, 13:36:51
kosmowariat explode ? w jaki sposób ? jakoś mało sensowne to r... 20.07.2007, 15:53:01
1010 tniesz na kawałki i wyciągasz odpowiednie fragment... 20.07.2007, 22:10:11
orglee A co chcesz wyciągnąć z tego kodu określ to precyz... 20.07.2007, 22:44:48
nilo Cytat(hidee @ 20.07.2007, 07:42:49 ) ... 20.07.2007, 23:16:09 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 22:53 |