jam Posted April 24, 2006 Report Share Posted April 24, 2006 Ir kontent txt fails 23.4.2006, 22:41 [|] 1 [|] our clients [|] text texttext Ar šo nolasu to failu: $open = "filename.txt"; $filearr = file($open); foreach($filearr as $row) { list($labdat, $showit, $name, $text) = explode(" [|] ",$row); } Variables $labdat, showit, $name, $text varu echot kur vajag. Viss ir forši līdz brīdim, kad no textarea tiek uplodeeta tabula tajā txt failā un fails izskatās šādi 23.4.2006, 22:41 [|]1 [|] our clients [|] text texttext <table cellspacing="1" cellpadding="1" width="200" border="1"> <tbody> <tr> <td> </td> <td> </td> </tr> </tbody> </table> Diemžēl masīva sadalīšana elementos kā atdalītāju izmantojot " ][ " simbolu vair nestrādā kā vajag. $labdat variablee paraadaas arii <table Ir vispār kāda iespēja glabāt vairākus 'datus' vienā txt failā un pēc tam dabūt tos masīvā? Link to comment Share on other sites More sharing options...
v3rb0 Posted April 24, 2006 Report Share Posted April 24, 2006 (edited) ja tiešām vajag vienā rindā, tad base64_*() f-jas pasties. vai texta lauka beigās pieliec kaut ko EOL_ASDFGH un lasi texta lauku nevis līdz rindas beigam, bet kamēr tiec līdz EOL_ASDFGH iezīmei. Edited April 24, 2006 by v3rb0 Link to comment Share on other sites More sharing options...
jam Posted April 24, 2006 Author Report Share Posted April 24, 2006 bet base64_*() saistīts ar encode +decode. Domā tas vienkārši būtu līdzeklis, ka visu saturu vienā rindā pārvērst? Link to comment Share on other sites More sharing options...
GedroX Posted April 24, 2006 Report Share Posted April 24, 2006 Tu jau vari taisīt $text = str_replace(Array("\r\n", "\n"), Array('\\r\\n', '\\n'), $text); Bet saņemot datus - $text = str_replace(Array('\\r\\n', '\\n'), Array("\r\n", "\n"), $text); ..vai biku savādāk. Fakts tāds - aizvieto rindu atdalītājus ar kautkādām simbolu speckombinācijām. Link to comment Share on other sites More sharing options...
jam Posted April 24, 2006 Author Report Share Posted April 24, 2006 GedroX , starp citu, tas base64_encode un decode tiešām palīdz. Pat UTF-8 saglabājas :) Protams sviestīgi, ka pa taisno txt failā nevar neko redzēt :/ Link to comment Share on other sites More sharing options...
GedroX Posted April 24, 2006 Report Share Posted April 24, 2006 Nu bet protams, ka base64 darbosies! =) Es tikai piedāvāju vienkāršāku/ ātrāku (pēc manām domām) variantu, kuru varētu arī atkodēt, piemēram, izmantojot JS. Link to comment Share on other sites More sharing options...
jam Posted April 24, 2006 Author Report Share Posted April 24, 2006 a bez base64_ f-jas var iztik ar šo $filearr = file_get_contents($open); $filearr = array($filearr); foreach($filearr as $row) { list($labdat, $showit, $name, $teksts) = explode(" [|] ",$row); } Link to comment Share on other sites More sharing options...
jam Posted April 24, 2006 Author Report Share Posted April 24, 2006 nee, tomēr nevar. tas jau ir tas pats file (), ja ieliek arraya :) Link to comment Share on other sites More sharing options...
GedroX Posted April 24, 2006 Report Share Posted April 24, 2006 Cik saprotu dotais skripts ir identisks šim: $filearr = file_get_contents($open); list($labdat, $showit, $name, $teksts) = explode(" [|] ",$filearr); , jo tu iegūsti masīvu ar vienu elementu (visu teksa faila saturu) un pielieto tam ciklu foreach... :) Link to comment Share on other sites More sharing options...
john.brown Posted April 24, 2006 Report Share Posted April 24, 2006 (edited) Tas gan darbosies tik ja failā ir viens ieraksts. Pie tam, nav skaidrs, priekš kam tev tur šitas: $filearr = array($filearr); foreach($filearr as $row) {...} file_get_contents() atgriež stringu ar VISU faila saturu. Tātad, tev tanī $filearr vienmēr būs tikai viens elements. Un taisot explode tajā list() tev būs tik pirmā ieraksta vērtības... Var, protams, taisīt explodi, dabūt masīvu ar visu ierakstu vērībām, un pēc tam viltīgi no massīva to visu vilkt ārā, tak hemorojs, imho Apmēram šitā: $contents = file_get_contents($datafile); $cont_array = explode('[|]',$contents); $fields = array('labdat', 'showit', 'name', 'teksts'); $fcount = sizeof($fields); $n = 0; $dataarr = array(); while($val = array_shift($cont_array)) { if($n == $fcount) { $n = 0; $dataarr[] = $row; } if($n == 0) $row = array(); $row[$fields[$n]] = $val; $n++; } Netiku gan testējis, var būt kāda kļūda, tak ideja tāda... Edited April 24, 2006 by john.brown Link to comment Share on other sites More sharing options...
jam Posted April 24, 2006 Author Report Share Posted April 24, 2006 tad laikam ērtāk izmantot to base64_encode un decode, nevis mocīties Link to comment Share on other sites More sharing options...
bubu Posted April 24, 2006 Report Share Posted April 24, 2006 A kam tev enterus HTMLā? Ja nevajga pre tagus lietot, tad vispār met tos ārā (aizvieto ar atstarpi) pie ieraksta pievienošanas. HTMLā taču vairāk whitespeisi pēc kārtas tiek ignorēti un enters tiek kā parasta atstarpe uztverta. Link to comment Share on other sites More sharing options...
jam Posted April 24, 2006 Author Report Share Posted April 24, 2006 tipa domā ar šo:? $text = str_replace(Array("\r\n", "\n"), Array('\\r\\n', '\\n'), $text); Link to comment Share on other sites More sharing options...
john.brown Posted April 24, 2006 Report Share Posted April 24, 2006 Nē, šitā: $text = str_replace(Array("\r\n", "\n"), Array(' ', ' '), $text); Link to comment Share on other sites More sharing options...
Recommended Posts