Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Regex usuwający tag wraz z zawartością
Forum PHP.pl > Forum > Przedszkole
miras
Witam, mam w zmiennej $var zapisany jakiś kod html, w którym znajduje się tag <style> tu jakieś style </style>


Próbowałem się go pozbyć w ten sposób:

  1. $rwd_description = preg_replace('/(<script[^>]*>.+?<\/script>|<style[^>]*>.+?<\/style>)/s', '', $row['opis']);


Dodam jeszcze, że często się zdarza tak, że <style> jest wstawiony wewnątrz tabelki w <td>...


Niestety bez rezultatu, ma ktoś jakiś pomysł?
viking
phpquery czy podobne, znajdź tag script, usuń.
miras
czyli sugerujesz, że regexem jest to nie do wykonania?
Pyton_000
wywal 's' z preg_replace. I pokaż przykładowy tekst
viking
Sugeruję ze regexp nigdy nie służył do pracy na DOM.
miras
Wywaliłem, niestety bez zmian.

kod:

  1. <div id="user_field">
  2. <style><!--
  3. #user_field table {padding:0;} #user_field table.genby {font-family: Arial, Helvetica, sans-serif; margin:0 auto 0 auto; padding:0px; text-align:left;} #user_field td.genbyl {padding-top:5px;padding-left:20px;text-align:left;} #user_field div.genby {text-align:center;}
  4. --></style>
  5. <div class="genby">
  6. <table class="genby" border="0" cellpadding="0" cellspacing="0">
  7. <tr>
  8. <td>
  9. <style><!--
  10. #user_field * {margin:0; padding:0;}
  11. #user_field a {text-decoration:none;}
  12. #user_field img {border:none;}
  13. #user_field {text-align:center; background:url(http://thomson24.pl/data/include/cms/allegro/bg.jpg); background-repeat:repeat-x; background-color:#eaeaea;}
  14. #user_field #all {margin:0 auto; text-align:left; width:980px; font-family:Tahoma; font-size:11px;}
  15. #user_field #top {background:url(http://thomson24.pl/data/include/cms/allegro/top.jpg); width:980px; height:134px;}
  16. #user_field #header_top { padding-top:5px;}
  17. #user_field #header_top_left {float:left;}
  18. #user_field #header_top_right {float:right; font-weight:bold; padding-right:15px;}
  19. #user_field #ulubione a {color:#3e9ebb;}
  20. #user_field #pytanie {color:#da6340; padding-left:42px;}
  21. #user_field #pytanie a {color:#da6340;}
  22. #user_field #menu_top {height:28px; padding-top:10px;}
  23. #user_field #menu_top .link {font-weight:bold; }
  24. #user_field #menu_top .link a {color:#000000;width:139px;height:28px;float:left; background-color:#f2f2f2; text-align:center; border-left:1px solid #999999;}
  25. #user_field #menu_top .link a:hover {color:#ffffff;width:139px;height:28px;background-image:url(http://thomson24.pl/data/include/cms/allegro/menutop_hover.jpg);float:left; background-repeat:no-repeat;}
  26. #user_field #main { background-color:#FFFFFF; width:980px; background:url(http://thomson24.pl/data/include/cms/allegro/main_bg.jpg); background-repeat:repeat-y;}
  27. #user_field #main_top {background:url(http://thomson24.pl/data/include/cms/allegro/main_top.jpg); width:980px; height:58px;}
  28. #user_field .menutop_text {position:relative; top:9px;}
  29. #user_field #left{float:left; width:180px; background-color:#eaeaea; position:relative; left:10px;}
  30. #user_field #center{float:left; width:580px; position:relative; left:10px; overflow:hidden;}
  31. #user_field #right{float:right; background:url(http://thomson24.pl/data/include/cms/allegro/right_bg.jpg); width:180px; height:35px; background-repeat:no-repeat; position:relative; right:10px;}
  32. #user_field .content_left {width:156px; margin-left:12px; padding-top:10px; padding-bottom:10px;}
  33. #user_field .poczta {color:#474747; font-weight:bold;margin-bottom:3px;}
  34. #user_field .left_top {width:156px; height:8px; background:url(http://thomson24.pl/data/include/cms/allegro/left_top.jpg); font-size:1px;}
  35. #user_field .left_poczta_main {width:156px; background-color:#969696;padding-top:10px;}
  36. #user_field .left_bottom {width:156px; height:7px; background:url(http://thomson24.pl/data/include/cms/allegro/left_bottom.jpg); font-size:1px;}
  37. #user_field .div_poczta {margin-left:12px;font-family:arial;}
  38. #user_field .koszt { font-size:12px; color:#ffffff; font-weight:bold; position:relative; left:15px; float:left;}
  39. #user_field .wysylka_cena {position:relative; right:15px; float:right;font-size:12px; color:#ffffff; font-weight:bold;}
  40. #user_field .koszt_opis {width:107px; color:#30333e; font-size:9px; margin-left:15px; padding-top:8px; padding-bottom:15px; clear:both;}
  41. #user_field #left_dol {background:url(http://thomson24.pl/data/include/cms/allegro/left_more_info.jpg); width:180px; height:32px; margin-top:15px; font-weight:bold;}
  42. #user_field #left_dol a {text-decoration:underline; color:#FFFFFF; position:relative; top:11px; left:40px;}
  43. #user_field #footer {background:url(http://thomson24.pl/data/include/cms/allegro/footer.jpg); width:980px; height:40px;margin-top:5px;}
  44. #user_field #right_dol {background:url(http://thomson24.pl/data/include/cms/allegro/right_more_info.jpg); width:180px; height:33px; margin-top:15px; font-weight:bold;}
  45. #user_field #right_dol a {text-decoration:underline; color:#FFFFFF; position:relative; top:11px; left:40px;}
  46. #user_field #dane_kontaktowe {width:160px; margin-left:10px; border-top: 1px solid #b8b8b8; margin-top:45px; padding-top:10px;}
  47. #user_field #right td {font-family:tahoma; font-size:11px;}
  48. #user_field #center td {font-family:tahoma; font-size:10px; color:5d5d5d;}
  49. #user_field #right a {text-decoration:underline; font-weight:bold; color:#000000;}
  50. #user_field #center_content{width:560px; margin-left:10px; padding-top:20px;}
  51. #user_field #product_name {color:#5d5d5d; font-weight:bold; font-size:18px; width:350px; float:left;}
  52. #user_field #producer_logo {float:right; width:200px; height:50px;}
  53. #user_field #fotka_medium{ width:250px; float:left; margin-top:25px; position:relative;left:15px;}
  54. #user_field #szczegoly_right{float:right; margin-top:25px; width:270px;}
  55. #user_field #szczegol {border-top:1px solid #c1c1c1; padding:10px 15px 10px 25px;}
  56. #user_field #szczegoly_text{float:left; color:#868686;}
  57. #user_field #szczegoly_wartosc{float:right; background:url(http://thomson24.pl/data/include/cms/allegro/dane_bg.jpg); width:169px; height:21px; text-align:center; color:#5d5d5d; font-weight:bold; background-repeat:no-repeat;}
  58. #user_field #szczegoly_wartosc span {position:relative; top:4px;}
  59. #user_field #lupa {background:url(http://thomson24.pl/data/include/cms/allegro/lupa.jpg); width:255px; height:40px; margin-top:10px;}
  60. #user_field #opis_produktu {width:580px; height:30px; background:url(http://thomson24.pl/data/include/cms/allegro/opis_produktu.jpg);}
  61. #user_field #parametry_techniczne {width:580px; height:30px; background:url(http://thomson24.pl/data/include/cms/allegro/parametry_techniczne.jpg);}
  62. #user_field .center_tresc{padding-top:24px; padding-bottom:24px;}
  63. #user_field #nazwa_sklepu {padding-top:34px; font-family: candara; font-size:40px; color:#ffffff; font-weight:bold; position:relative; left:34px; float:left; text-transform:uppercase;}
  64. #user_field #nazwa_konta{font-family:candara; color:#ffffff; font-size:20px; padding-left:40px; text-transform:uppercase; font-weight:bold;}
  65. #user_field #gg {position:absolute; right:99px;}
  66. #user_field #skype {position:absolute; left:43px;}
  67. #user_field #thumbs {padding-top:10px; padding-bottom:10px;}
  68. --></style>
  69. <p align="center"><img border="0" src="http://thomson24.pl/data/include/cms/mail/logo_mail.png"></p>
  70. <div id="all">
  71. <div id="top">
  72. <div id="header_top">
  73. <div id="header_top_left">Witaj na <strong>naszej aukcji</strong>! Życzymy udanych zakupów</div>
  74. <div id="header_top_right"><span id="ulubione"><a href="http://allegro.pl/myaccount/favourites_sellers.php/addNew/?userId=35329097">Dodaj nas do ulubionych</a></span> <span id="pytanie"><a href="http://allegro.pl/email_to_user.php?uid=35329097">Masz pytanie? Napisz do nas</a></span></div>
  75. </div>
  76. <div style="clear: both;"></div>
  77. <div id="nazwa_sklepu"><span style="color: #000000;"> </span></div>
  78. <div style="clear: both;"></div>
  79. <div id="nazwa_konta">sprzedający: Manissa Europe Sp. z o.o.</div>
  80. </div>
  81. <div id="menu_top">
  82. <div class="link"><a href="http://allegro.pl/my_page.php?uid=35329097" style="border: none;"><span class="menutop_text">O FIRMIE</span></a></div>
  83. <div class="link"><a href="http://allegro.pl/show_user_auctions.php?uid=35329097"><span class="menutop_text">INNE NASZE AUKCJE</span></a></div>
  84. <div class="link"><a href="http://allegro.pl/show_user.php?uid=35329097"><span class="menutop_text">NASZE KOMENTARZE</span></a></div>
  85. <div class="link"><a href="http://allegro.pl/my_page.php?uid=35329097"><span class="menutop_text">REGULAMIN AUKCJI</span></a></div>
  86. <div class="link"><a href="http://allegro.pl/my_page.php?uid=35329097"><span class="menutop_text">GWARANCJA I ZWROTY</span></a></div>
  87. <div class="link"><a href="http://allegro.pl/my_page.php?uid=35329097"><span class="menutop_text">TABELA ROZMIARÓW</span></a></div>
  88. <div class="link"><a href="http://allegro.pl/my_page.php?uid=35329097"><span class="menutop_text">TERMIN WYSYŁKI</span></a></div>
  89. </div>
  90. <div id="main_top"></div>
  91. <div id="main">
  92. <div id="left">
  93. <div class="content_left">WYSTAWIAMY FAKTURY VAT</div>
  94. <div class="content_left">Za zakupiony towar o dowolnej wartości można zapłacić przelewem na nasze konto:</div>
  95. <div class="content_left" style="border-top: 1px solid #b6b6b6; border-bottom: 1px solid #b6b6b6; text-align: center;"><span style="line-height: 20px; font-weight: bold; color: #d85937;"><span style="color: #000000;">73 1240 5080 1111 0010 5173 3200</span></span></div>
  96. <div class="content_left">Na wpłatę czekamy do 7 dni od momentu zakupu towaru.<br><br><br>Istnieje również możliwość płatności przy odbiorze przesyłki.<br> <br>Koszt wysłania towaru wynosi:</div>
  97. <div class="div_poczta">
  98. <div class="poczta">Kurier</div>
  99. </div>
  100. <div class="div_poczta" style="margin-top: 15px;">
  101. <div class="left_top"></div>
  102. <div class="left_poczta_main">
  103. <div class="koszt">Przedpłata</div>
  104. <div class="wysylka_cena">25zł</div>
  105. <div class="koszt_opis">(Przesyłka jest wysyłana w 24h)</div>
  106. <div class="koszt">Pobranie</div>
  107. <div class="wysylka_cena">30zł</div>
  108. <div class="koszt_opis">(Przesyłka jest wysyłana w 24h)</div>
  109. </div>
  110. <div class="left_bottom"></div>
  111. <p><br><br><br>Biorąc udział w naszych aukcjach akceptujesz Regulamin zawarty na stronie "O FIRMIE".</p>
  112. </div>
  113. <div id="left_dol"><a href="http://allegro.pl/my_page.php?uid=35329097">więcej informacji</a></div>
  114. </div>
  115. <div id="center">
  116. <div id="center_content">
  117. <div id="product_name">Grzejnik elektryczny Whitby 500x380 Biały (elektryczny suchy, suszarka łazienkowa)</div>
  118. <div id="producer_logo"></div>
  119. <div style="clear: both;"></div>
  120. <div id="szczegoly">
  121. <table border="0">
  122. <tr>
  123. <td style="width: 215px;">producent: <strong>Thomson heating</strong></td>
  124. <td>gwarancja: <strong>5 lat</strong></td>
  125. </tr>
  126. </div> </div>


phpQuery w ten sposób tez nie usuwa <style>z zawartością</style>


  1. $doc = phpQuery::newDocument($x);
  2. $rwd_description = $doc->remove('style');
  3.  


A to usuwa mi wszystko:

  1. $doc['style']->remove();
trueblue
Jak to możliwe, że u mnie ten regexp usuwa poprawnie style?
Czy czasem ten kod nie ma zakodowanych znaczników html?
miras
Dokładnie ten kod wygląda tak: http://wklej.org/hash/579c6bbcf00/

Na forum musiałem wrzucić trochę okrojoną wersję.
trueblue
Bez zmian. Usuwa.
miras
trueblue Dzięki, błąd miałem w calkiem innym miejscu, regex faktycznie działa, ale gdybyś tego nie przetestował to bym stracił kolejne kilka godzin smile.gif
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.