Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Preg replace - zawartość od DIVa do DIVa
wujek2009
post 12.10.2013, 06:42:23
Post #1





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


Cześć.

Potrzebuje ułożyć regułę, która będzie usuwać zawartość konkretnego diva - tylko muszę pamiętać, że w tym divie mogą być inne divy.
Kod
~<div id="podsumowanie" class="podsumowanie">.+?</div>~


Ogólnie powyższa reguła działa, ale wykłada się, gdy w divie "podsumowanie" znajdzie się inny div.
Myślałem nad rozwiązaniem, aby na ostatni div (tj: </div) nadać jakiś identyfikator/klasę np. </div id="podsumowanie_koniec") i to rozwiązałoby moje problemy, ale takie rozwiązanie jest trochę amatorskie (?)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
PrinceOfPersia
post 12.10.2013, 15:44:02
Post #2





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


a nie lepiej byłoby użyć jakiegoś parsera HTML? w PHP jest klasa DOMDocument do operowania na HTMLu - http://www.php.net/manual/en/class.domdocument.php , a pewnie i jakieś inne by się znalazły...


--------------------
Go to the top of the page
+Quote Post
BigPig
post 15.10.2013, 15:59:52
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 18.06.2013
Skąd: Białystok

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


Cześć. Wybacz, że tak późno, ale nie miałem wcześniej czasu.

Fajny problem, nie mogłem się oprzeć pokusie by go rozwiązać. Wpadłem na trzy różne pomysły, ten, który zrealizowałem okazał się zdecydowanie najprostszy.

  1. function Oczysc($div)
  2. {
  3. $selekcja = explode("<", $div);
  4.  
  5. for($i=1;$i<count($selekcja);$i++)
  6. {
  7. if(substr($selekcja[$i],0,3) == "div" || substr($selekcja[$i],0,4) == "/div" )
  8. {
  9. $wydzielamy_div = explode(">",$selekcja[$i]);
  10. $obrobiony = "<".$wydzielamy_div[0].">";
  11. $wszystkie_divy[] = $obrobiony;
  12. }
  13. }
  14.  
  15. return $wszystkie_divy;
  16. }


1) Funkcja radzi sobie z zagnieżdżonymi div'ami
2) Zwrócone przez funkcję, odwócone div'y są tak samo pozagnieżdżane jak to było w pierwotnej wersji.

Tak odrazu uprzedzam(sam się zastanawiałem o co chodzi biggrin.gif ), że jak wrzucisz funkcję do print_r to pokaże Ci jakby do kluczy nie było nic przypisane. Jak sprawdzisz kod źrodłowy to zobaczysz, że div'y są opróżnione.

Ten post edytował BigPig 16.10.2013, 08:05:41
Go to the top of the page
+Quote Post
wujek2009
post 15.10.2013, 17:57:29
Post #4





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


@PrinceOfPersia - użyłbym tej klasy, gdyby nie fakt, że źródło ma trochę elementów; więc przetworzenie tego przez DOMDocument mogłoby trochę zająć.
@BigPig - dzięki za zaangażowanie, później przetestuje ten kod i zobaczymy jak się sprawdza.
Go to the top of the page
+Quote Post

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: 13.08.2025 - 23:28