Lynx Posted July 3, 2005 Report Share Posted July 3, 2005 Tiku pielaists pie viena projekta un saskāros ar problēmu. Ir datubāzes lauks kuram sākumā ir nenoteikta daudzuma teksts un pašās beigās sākas tabula ar tieši šādu struktūru: <TABLE cellspacing=10 cellpadding=0 border=0> <TR> <TD align="center"><A href=""><IMG src="" border="0" alt="1"></A></TD> <TD align="center"><A href=""><IMG src="" border="0" alt="1"></A></TD> </TR> utt </TABLE> Problēma rodas tur, ka tabula ir veidota visur saspaidot "enter" un nl2br parvesh visus "enter" par bezjeedzigi lielu atstarpi starp teksta beigaam un tabulas sakumu ar atteliem. Ideja bija tāda, ka nepieciešams skripts, kas izravē visus enter starp tagiem <TABLE> un </TABLE> un pēc tam savada visu to datubāzē. Shitik taalu es tiku: izraveejam newline: str_replace('/n',"" , $teksts) Un ar izvadīšanu un ievadīšanu db arī problēmas nebūs. Bet kā panākt, lai tie newlaini tiktu nonemti tikai starp <table> </table> nav ne jausmas. Link to comment Share on other sites More sharing options...
bubu Posted July 3, 2005 Report Share Posted July 3, 2005 $text=preg_replace('@\<table\>.*</table\>@Umse', 'str_replace("\n","","\0")', $text); Link to comment Share on other sites More sharing options...
Lynx Posted July 3, 2005 Author Report Share Posted July 3, 2005 Hmm, nedarbojas. Nav nekādu erroru, bet arī izlabots nekas netiek. Meiģināju pats ilgu laiku salīdzināt, kā darbojas forumu bbcode, lasīt manuāli un salabot šo gabalu, lai strādātu, nekā. Link to comment Share on other sites More sharing options...
bubu Posted July 3, 2005 Report Share Posted July 3, 2005 Hm, man uz php 5.0.1 šāds fragments: <?php $text = "aa\nbb<table>cc\ndd\n</table>ff\ngg"; $text = preg_replace('@\<table\>.*</table\>@Umse', 'str_replace("\n","","\0")', $text); echo str_replace("\n", '\n', $text); ?> izdod šādu rezultātu: aa\nbb<table>ccdd</table>ff\ngg Man laikam strādā :) Link to comment Share on other sites More sharing options...
Lynx Posted July 3, 2005 Author Report Share Posted July 3, 2005 Nu jā tad redzkur ir problēma :) Uz tā servera ir tikai php 4. Es itkā salīdzinot ar bbcode piemēriem dabūju gatavu šādu brīnumu, lieki piebilst, ka nestrādā :) $text= preg_replace("#\<TABLE\>(.*?)\</TABLE>#si", str_replace("\n","","\\1"), $text ); Link to comment Share on other sites More sharing options...
bubu Posted July 3, 2005 Report Share Posted July 3, 2005 (edited) str_replace pēdiņās jāliek! citādi pirms preg_replace izsaukuma notiek str_replace izsaukums, kas ir galīgi nepareizi. Edit: es nezinu kas tur var tev nestrādāt ar php4. Pamēģināju uz 4.3.11. Strādā pilnīgi tāpat, kā minēju augstāk. Edited July 3, 2005 by bubu Link to comment Share on other sites More sharing options...
Lynx Posted July 3, 2005 Author Report Share Posted July 3, 2005 Njaa es atkal pameiģināju tavu variantu un strādā. Bet ar tekstu no datubāzes, kas aizņem aptuveni vairāk par 200 rindām nestrādā. Un sākumā nestrādāja manas muļķības dēļ - pavisam biju aizmirsis pieminēt, ka tabula izskatās šādi: <TABLE cellspacing=10 cellpadding=0 border=0> Veicu izmaiņas koda un patiešām nekādi \n neparādijās iekš tabulas. Bet tikko, kā palaidu caur nl2br rezultātu tā visā tabulā bija <b /r> iekšā un velaizvien repleicotais vārds no preg_replace. $text = preg_replace('@\<TABLE cellspacing=10 cellpadding=0 border=0\>.*</TABLE\>@Umse', 'str_replace("\n","asd","\0")', $teksts); echo nl2br($text); Daļa no rezultāta izskatās šādi: <TABLE cellspacing=10 cellpadding=0 border=0><TR><br /> asd<br /> asd<TD><A href=""><IMG src="" border="0" alt="1"></A></TD><br /> asd<TD>utt Tātad sanāk, ka nostrādā tikai daļēji. Link to comment Share on other sites More sharing options...
bubu Posted July 3, 2005 Report Share Posted July 3, 2005 Vai gadījumā nav tā, ka entera vietā ir \n\r nevis tikai \n iekš DB? Link to comment Share on other sites More sharing options...
Lynx Posted July 3, 2005 Author Report Share Posted July 3, 2005 Eh, par šito lietu pilnīgi biju aizmirsis. Liels paldies, tagad visu dabūju gatavu. Link to comment Share on other sites More sharing options...
Recommended Posts