Jump to content
php.lv forumi

Satura glabāšana txt un atdabūšana


jam

Recommended Posts

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

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 by v3rb0
Link to comment
Share on other sites

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

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

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

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 by john.brown
Link to comment
Share on other sites

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

×
×
  • Create New...