Autor Zpráva
MelkorNemesis
Profil
Ahoj, mam uz 3hodinovy problem a nemuzu se ho zbavit. Potrebuju z textu vyhodit tabulku.
Toto je muj regular -
preg_match('~<table (.*)/table>~', $string, $matches); // tady preg_match neco aspon najde, ale preg_replace to nepremaze
preg_match('~<table (.*)>(.*)</table>~', $string, $matches); // tady preg_match nenajde nic


a text retezce (pro ukazku)
<p><span style="color: #000000; font-family: Verdana;"> <table border="0" cellspacing="0" cellpadding="0" align="left"> <tbody> <tr> <td valign="top"> <p>20. 12. 2008</p> </td> <td valign="top"> <p>sobota</p> </td> <td valign="top"> <p>13 &ndash; 17 hodin</p> </td> </tr> <tr> <td valign="top"> <p>21. 12. 2008</p> </td> <td valign="top"> <p>neděle</p> </td> <td valign="top"> <p>13 &ndash; 17 hodin</p> </td> </tr> <tr> <td valign="top"> <p>22. 12. 2008</p> </td> <td valign="top"> <p>ponděl&iacute;</p> </td> <td valign="top"> <p>zavřeno</p> </td> </tr> <tr> <td valign="top"> <p>23. 12. 2008</p> </td> <td valign="top"> <p>&uacute;ter&yacute;</p> </td> <td valign="top"> <p>9 &ndash; 17 hodin</p> </td> </tr> <tr> <td valign="top"> <p>24. 12. 2008</p> </td> <td valign="top"> <p>středa</p> </td> <td valign="top"> <p>zavřeno</p> </td> </tr> <tr> <td valign="top"> <p>25. 12. 2008</p> </td> <td valign="top"> <p>čtvrtek</p> </td> <td valign="top"> <p>zavřeno</p> </td> </tr> <tr> <td valign="top"> <p>26. 12. 2008</p> </td> <td valign="top"> <p>p&aacute;tek</p> </td> <td valign="top"> <p>zavřeno</p> </td> </tr> <tr> <td valign="top"> <p>27. 12. 2008</p> </td> <td valign="top"> <p>sobota</p> </td> <td valign="top"> <p>13 &ndash; 17 hodin</p> </td> </tr> <tr> <td valign="top"> <p>28. 12. 2008</p> </td> <td valign="top"> <p>neděle</p> </td> <td valign="top"> <p>13 &ndash; 17 hodin</p> </td> </tr> <tr> <td valign="top"> <p>29. 12. 2008</p> </td> <td valign="top"> <p>ponděl&iacute;</p> </td> <td valign="top"> <p>zavřeno</p> </td> </tr> <tr> <td valign="top"> <p>30. 12. 2008</p> </td> <td valign="top"> <p>&uacute;ter&yacute;</p> </td> <td valign="top"> <p>9 &ndash; 17 hodin</p> </td> </tr> <tr> <td valign="top"> <p>31. 12. 2008</p> </td> <td valign="top"> <p>středa</p> </td> <td valign="top"> <p>zavřeno</p> </td> </tr> <tr> <td valign="top"> <p>1. 1. 2009</p> </td> <td valign="top"> <p>čtvrtek</p> </td> <td valign="top"> <p>zavřeno</p> </td> </tr> <tr> <td valign="top"> <p>2. 1. 2009</p> </td> <td valign="top"> <p>p&aacute;tek</p> </td> <td valign="top"> <p>9 &ndash; 17 hodin</p> </td> </tr> </tbody> </table> </span></p> <p>&nbsp;</p>



Diky vsem za pripominky
nixxy
Profil *
* vyreseno po ICQ
pro zajemce:
~(<table[^>]*>.*</table>)~i
bohyn
Profil
nixxy
To sice smaze <table> a </table>, ale necha ti tam spoustu jinych tagu
$string = preg_replace("/<table.*?>|<\/table>|<tr.*?>|<\/tr>|<td.*?>|<\/td>|<tbody.*?>|<\/tbody>/i", "", $string);

I tak ale zbyde docela smetiste - vnorene odstavce do sebe a vnorene blokove elementy do inline
blaaablaaa
Profil
bohyn
myslim, ze .* bere v podtaz vsechno mezi <table> a </table> ... takze i tr, td, tbody, ...
bohyn
Profil
blaaablaaa
Prave ze ano. To co ma on, odstrani jen <table> a </table>, vsechno co je mezi necha tak jak je.
MelkorNemesis
Profil
 $string = preg_replace("~\n~", '', $string);
 $string = preg_replace('~<table[^>]*>.*</table>~m', '', $string);


tohle odstrani vsechno mezi <table> a </table> - coz jsem potreboval
bohyn
Profil
MelkorNemesis
Aha tak to se vsem omlouvam, pochopil sem to tak ze se chces zbavit tabulky a nechat obsah.
MelkorNemesis
Profil
bohyn: vpohode, potreboval sem to proto, ze mam nejaky clanek a obsahuje tabulku, jenze ja to orezavam na 30 slov..a kdyz useknu tabulku v pulce, tak se vyrenderuje az jako posledni a mimo div, tak sem se ji musel zbavit.
danko
Profil *
all: no ono je to sice fajn, ze to odstrani tabulku, a pre ten konkretny pripad pre aky to potreboval to je v poho, ale ked uz to je tu nakusnute tak by som sa chcel spytat ako ale poriesit v preg_replace to aby odstranilo len tabulku.... uvediem priklad
mam html
<table><tr><td>blabla</td></tr></table>
<p>nejaky dalsi text</p>
<table><tr><td>bleble</td></tr></table>

potom hore uvedeny prikaz spravi to ze odstrani vsetko aj s tagom <p>. da sa to vyriesit v preg_replace??? alebo to treba pisat rucne ...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: