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.