jogin Posted February 26, 2006 Report Share Posted February 26, 2006 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 More sharing options...
jogin Posted February 26, 2006 Author Report Share Posted February 26, 2006 Varbūt varat ieteikt kādu citu risinājumu, kā eksplodēt arraju un sadalīt pa vienādiem stabiņiem! Lūdzu palīdziet kāds! Link to comment Share on other sites More sharing options...
GedroX Posted February 27, 2006 Report Share Posted February 27, 2006 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 More sharing options...
jogin Posted February 27, 2006 Author Report Share Posted February 27, 2006 (edited) 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 February 28, 2006 by jogin Link to comment Share on other sites More sharing options...
GedroX Posted February 28, 2006 Report Share Posted February 28, 2006 Varbūt šis skripts palīdz. Link to comment Share on other sites More sharing options...
jogin Posted February 28, 2006 Author Report Share Posted February 28, 2006 Nu vispār ideāli! Liels paldies :) Link to comment Share on other sites More sharing options...
jogin Posted February 28, 2006 Author Report Share Posted February 28, 2006 A ko darīt, ja tev ir PHP < 4.2.0 versiju? Kā var izlīdzēties bez array_chunk funkcijas? Link to comment Share on other sites More sharing options...
bubu Posted February 28, 2006 Report Share Posted February 28, 2006 Nesaprotu cilvēkus, kas negrib dokumentāciju lasīt... http://lv2.php.net/manual/en/function.array-chunk.php#41347 Link to comment Share on other sites More sharing options...
jogin Posted February 28, 2006 Author Report Share Posted February 28, 2006 Šā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 More sharing options...
Recommended Posts