Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Usuwanie wiersza tabeli (<tr>) za pomocą preg_repace
Forum PHP.pl > Forum > Przedszkole
parzygnat
Witam,
Chciałbym usunąć wiersz tabeli który wygląda tak
  1. $content="....
  2. <tr class="last print_delete">
  3. <td class="left print_hole"></td>
  4. <td class="center print_hole"></td>
  5. <td class="right print_hole">
  6. ........
  7. </td>
  8. </tr>
  9. ...";
  10. $content = preg_replace('/<tr.*class=".*print_delete".*>.*<\/tr>/', '', $content);


Niestety zwraca taki sam $content (nie znajduje wzorca)
sadistic_son
Jeśli wygląd tego wiersza jest niezmienny to po co od razu wyrażenie regularne?
  1. $content="....
  2. <tr class="last print_delete">
  3. <td class="left print_hole"></td>
  4. <td class="center print_hole"></td>
  5. <td class="right print_hole">
  6.  
  7.  
  8. </div>
  9. </td>
  10. </tr>
  11. ...";
  12.  
  13. $delete='<tr class="last print_delete">
  14. <td class="left print_hole"></td>
  15. <td class="center print_hole"></td>
  16. <td class="right print_hole">
  17.  
  18.  
  19. </div>
  20. </td>
  21. </tr>';
  22.  
  23. $content=str_replace($delete,'',$content);
parzygnat
Niestety jest zmienny dałem może zbyt duże uproszczenie. Tam trzeba zastosować PREG'a. Chodzi o to że coś skopałem we wzorze.
croc
A taki?
Kod
#<tr.*?class=".*?print_delete".*?</tr>#
parzygnat
niestety nie działa
croc
Zapomniałem dodać flagę s:
Kod
#<tr.*?class=".*?print_delete".*?</tr>#s
parzygnat
flaga s spowodowała że usunął wszystko od pierwszego napotkanego <tr> do ostatniego zamknięcia </tr> czyli wszyskto z tabeli, tak jakby nie było to wogóle istotne że szukamy tr ktore maja w klasie print_delete
croc
Kod
#<tr[^>]*class="[^"]*print_delete".*?</tr>#s
parzygnat
Dokładnie, dzięki za pomoc. Działa
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.