Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [preg / DOMDocument]Wywalanie wartości div'a, Jak to zrobić ?
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Witam mam taki oto kod html:
  1. <div id="container">
  2. <div class="header">
  3. <div style="margin-left:5px;">tytul</div>
  4. <div style="float:right; margin-right:5px;">data</div>
  5. </div>
  6. <div class="content">
  7. <img src="http://localhost/DeedraCorp/images/test.gif" height="100" width="100"><p>Zawartosc</p>
  8. </div>
  9. <div class="fotter">Komentarze</div>
  10. </div>
Chciałbym usunąć tag <div class="header"> z dokumentu
Przychodzą i do głowy tylko dwie metody wymienione w temacie.
Jak to zrobić ? Zakładając że powyższy kod jest już w zmiennej $string.
Próbowałem to zrobić przy użyciu takiego regexa: "/<div class="header">(.*?)<\/div>/"
Robionego automatycznie przez metodę:
  1. <?php
  2. public function remove_tag($tag_name, $tag_properties='')
  3. {
  4. $atrr='';
  5. foreach($tag_properties as $key => $val)
  6. {
  7. $atrr .= ' '.$key.'="'.$val.'"';
  8. }
  9. $regex = "/<$tag_name$atrr>(.*?)</$tag_name>/";
  10. return preg_replace($regex,'',$this->tmpl);
  11. }
  12. ?>
Niestety to rozwiązanie działa tylko kiedy nie ma dodatkowych tagów wewnątrz usuwanego diva.
Jak to zrobić za pomocą DOMDocument ewentualnie jakie zrobić zapytanie do funkcji preg_replace() ?
edit>
Chciałbym usunąć tag <div class="header"> z dokumentu razem z zawartością
edit>>
Dodałem modyfikator /s na końcu zapytania dzięki czemu zapytanie nie zwraca uwagi na nowe linie.
Teraz mam problem ze znakiem zapytania wewnątrz nawiasów ( po gwiazdce ) wiem że jest to tak zwany znak niezachłanny czyli dzięki niemu zapytanie wytnie ciąg do najbliższego <\/$tag_name> jeśli jednak w divie stosuję inne divy
<div id="to_wycinam"><div class="jakis_tekst"></div><div class="blabla"></div></div<
To znak zapytania spowoduje wycięcie, usunięcie zamiast całej linijki tego tekstu <div id="to_wycinam"><div class="jakis_tekst"></div>. Co zrobić że preg_replace rozpoznawał tą różnice.

Ten post edytował orglee 19.04.2007, 20:16:24
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:04