Jump to content
php.lv forumi

Kā nolasīt tekstu un, izvadot to, sadalīt kolonās


jogin

Recommended Posts

Kā nolasīt tekstu un, izvadot to, sadalīt kolonās tā, lai visās kolonās rindiņu garšu skaits būtu vienāds, bet, ja paliktu pāri, tad tiktu izveidota vēlviena kolona ar atlikušajiem vārdiem.

 

Man te ir tāda funkcija, kas reizēm gļuko. Es domaju, ka ceil vainīgs. Bet kā tad, lai dara savādāk?

 

<?php
function convert2columns ($colcontent, $columns, $column_spacing, $colW) {
 $coloutput = "<table border=\"0\" cellspacing=\"$column_spacing\" width=\"$colW px\"><tr>";
 $bodytext = array("$colcontent");
 $text = implode(" ", $bodytext);
 $length = strlen($text);
 $length = ceil($length/$columns);
 $words = explode("<br/>",$text);
 $c = count($words);
 $l = 0;
 for($i=1;$i<=$columns;$i++) {
$new_string = "";
$coloutput .= "<td id=\"taste\" style=\"text-align:justify\" valign=\"top\">";
 for($g=$l;$g<=$c;$g++) {
if(strlen($new_string) <= $length || $i == $columns)
$new_string.= $words[$g]."<br/>";
else {
  $l = $g;
break;
  }
 }
$coloutput .= $new_string;
$coloutput .= "</td>";
 }
 $coloutput .= "</tr></table>";
 return $coloutput;
}

$garsha = array(
pp01 => 'melnā apelsīna<br/>bananāsu<br/>ananāsu - mango<br/>kapeņu<br/>banānu<br/>banānu - bananāsu<br/>mušmiru<br/>cidoniju<br/>dzērveņu<br/>dzērveņu - brūkleņu<br/>kivi<br/>miršu - zemeņu<br/>ogu<br/>persiku<br/>marakujas<br/>upeņu<br/>utt. garšas',
);

$columns = 4;
$column_spacing = 10;
$colW = 500;
print convert2columns("$garsha[pp01]", $columns, $column_spacing, $colW);
?>

Link to comment
Share on other sites

function convert2columns_ag($colcontent, $columns, $column_spacing, $colW) {
$res = '<table border="0" cellspacing="' . $column_spacing . '" width="' . $colW . ' px">';
$content = array_chunk(explode('<br/>', $colcontent), $columns);
if (empty($content)) {
	$res .= '<tr><td></td></tr>';
} else {
	foreach ($content as $row) {
		$res .= '<tr>';
		foreach ($row as $value) {
			$res .= '<td>' . $value . '</td>';
		}
		$res .= '</tr>';
	}
}
$res .= '</table>';
 return $res;
}

 

Kā izskatās? Vienkāršota funkcija, bet īsti nesapratu tavu jautājumu... Un labāk tomēr padot tās garšas kā masīvu, citādi explode ar <br/> ir diezgan nekorekti. A ja nu tiek padots ar <br /> vai nu <br>?

 

P.S. Silti iesaku kādreiz izlasīt manuālī visas string, array funkcijas, citādi tādi brīnumi tiek rakstīti, kā vietā pietiktu ar vienu funkciju.

Link to comment
Share on other sites

Funkcija jau laba :) Paldies!

Būtu pavisam labi, ja tā dalītu kolonās kā žurnāla slejās (tā kā mana ne visai izdevusies f-ja), nevis garšas saliktu rindās - katru savā kolonā :)

Edited by jogin
Link to comment
Share on other sites

Šādi būs korekti?

 

function convert2columns ($colcontent, $columns, $column_spacing, $colW) { 
$fak = explode('<br/>', "$colcontent");
asort($fak);
$colcontent = $fak;
 //$colcontent = explode('<br/>', $colcontent); 
 $rows = ceil(count($colcontent) / $columns); 
 $res = '<table border="0" cellspacing="' . $column_spacing . '" width="' . $colW . ' px"><tr>'; 
########################################
$content = array();
$icolcount = count($colcontent);
$iLoops = floor($icolcount / $rows);
if ($iLoops * $rows != $icolcount) ++$iLoops;
if (!function_exists('array_chunk')) { // arraychunka aizvietotaajs
	reset($colcontent);
	for($i=0;$i<$iLoops;++$i) {
		for($j=0;$j<$rows;++$j) {
			$key = key($colcontent);
			$aTmp[$key] = $colcontent[$key];
			if (next($colcontent) === false) break;
		}
		$content[] = $aTmp;
	}
} else {
	$content = array_chunk($colcontent,$rows);
}
########################################
 //$content = array_chunk($colcontent, $rows); 
 foreach ($content as $row) { 
	 $res .= '<td id="taste" style="vertical-align: top; white-space: nowrap;">'; 
	 foreach ($row as $value) { 
		 $res .= $value . '<br/>'; 
	 } 
	 $res .= '</td>'; 
 } 
 $res .= '</tr></table>'; 
  return $res; 
}

???????

 

Nesaprotu cilvēkus, kas negrib dokumentāciju lasīt...

http://lv2.php.net/manual/en/function.array-chunk.php#41347

Es itkā skatījos! Būšu laikam netīšam palaidis garām :(

Nu ko anyway - milzīgs padies!!!

Link to comment
Share on other sites

×
×
  • Create New...