Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Usuwanie wiersza tabeli (<tr>) za pomocą preg_repace
parzygnat
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


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)

Ten post edytował parzygnat 3.11.2011, 19:59:01
Go to the top of the page
+Quote Post
sadistic_son
post
Post #2





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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);


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
parzygnat
post
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


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.

Ten post edytował parzygnat 3.11.2011, 20:00:14
Go to the top of the page
+Quote Post
croc
post
Post #4





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


A taki?
Kod
#<tr.*?class=".*?print_delete".*?</tr>#
Go to the top of the page
+Quote Post
parzygnat
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


niestety nie działa
Go to the top of the page
+Quote Post
croc
post
Post #6





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Zapomniałem dodać flagę s:
Kod
#<tr.*?class=".*?print_delete".*?</tr>#s
Go to the top of the page
+Quote Post
parzygnat
post
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


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
Go to the top of the page
+Quote Post
croc
post
Post #8





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Kod
#<tr[^>]*class="[^"]*print_delete".*?</tr>#s
Go to the top of the page
+Quote Post
parzygnat
post
Post #9





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


Dokładnie, dzięki za pomoc. Działa
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 Aktualny czas: 19.08.2025 - 21:55