Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_replace
Forum PHP.pl > Forum > PHP
jol.us_
Witam,

wyrazenia regularnie nigdy nie były moją mocną stroną, więc proszę was o pomoc.
Potrzebuje z wiekszego kodu pobrac tabele o okreslonej klasie oraz atrybucie width i wstawic ją do elementu div.
Da się to zrobić na preg_replace? Czy może jakimś innym sposobem?


Poniżej przykład obrazujący co chcę uzyskać.

Kod wejściowy:
  1. <table class="jakas-klasa" width="30%" cellspacing="0" cellpadding="0" border="0" style="color:red"">
  2. <tr><td><img src="obrazek.jpg" /></td></tr>
  3. <tr><td>Lorem ipsum dolor sit amet</td></tr>
  4. </tbody>
  5. <table class="jakas-klasa" cellspacing="0" cellpadding="0" border="0" width="100%" >
  6. <tr><td><img src="obrazek.jpg" /></td></tr>
  7. <tr><td>Lorem ipsum dolor sit amet</td></tr>
  8. </tbody>
  9. <table cellspacing="0" cellpadding="0" border="0" width="30%" class="jakas-klasa" >
  10. <tr><td><img src="obrazek.jpg" /></td></tr>
  11. <tr><td>Lorem ipsum dolor sit amet</td></tr>
  12. </tbody>


Pobieram tabele o atrybucie class="jakas-klasa" i atrybucie width="30%" i wstawiam ją do elementu <div>.
Przy czym kolejność atrybutów tabeli nie jest ustalona i może być inna (losowa).

Kod wynikowy
  1. <div>
  2. <table class="jakas-klasa" width="30%" cellspacing="0" cellpadding="0" border="0" style="color:red""> //wstawia do div
  3. <tr><td><img src="obrazek.jpg" /></td></tr>
  4. <tr><td>Lorem ipsum dolor sit amet</td></tr>
  5. </tbody>
  6. </div>
  7. <table class="jakas-klasa" cellspacing="0" cellpadding="0" border="0" width="100%" > //nie wstawia do div bo inny atrybut width
  8. <tr><td><img src="obrazek.jpg" /></td></tr>
  9. <tr><td>Lorem ipsum dolor sit amet</td></tr>
  10. </tbody>
  11. <div>
  12. <table cellspacing="0" cellpadding="0" border="0" width="30%" class="jakas-klasa" > //wstawia do div
  13. <tr><td><img src="obrazek.jpg" /></td></tr>
  14. <tr><td>Lorem ipsum dolor sit amet</td></tr>
  15. </tbody>
  16. </div>



Oczywiście przykłądowy kod jest mocno uproszczony. Tabele mogą sie zawierać w innych tabelach lub elementach html.
czychacz
A może zamiast wyrażeń regularnych, http://php.net/manual/en/class.domdocument.php ?
Ułatwia operacje na HTML i nie trzeba się bawić z samym konstruowaniem wyrażeń.
jol.us_
A coś bardziej "na tacy" dostanę?
Proszę smile.gif
czychacz
Tutaj masz stackoverflow jak korzystać z DOMDocument i DOMXPath:
http://stackoverflow.com/questions/2571232...tml-domdocument
Tutaj obsługa dodawania i usuwania node'ów:
http://php.net/manual/en/domnode.removechild.php
http://php.net/manual/en/domnode.appendchild.php
Oczywiście po odpowiednim użyciu DOMXPath - tam dostajesz nodelist (traversable), więc każdy element możesz sobie obrobić.
jol.us_
Dziękuję, pomogło
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.