---
title: "Visa kod i flera kolumner"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/170967-visa-kod-i-flera-kolumner"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Type"
published: "2008-04-22T13:48:13.000Z"
updated: "2008-04-24T17:57:57.000Z"
replies: 5
views: 461
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/170967-visa-kod-i-flera-kolumner"
---

# Visa kod i flera kolumner

## #1 — Type, 2008-04-22T13:48Z

Hej
Jag har försökt söka en stund nu men hittar inte vad jag letar efter. Jag har text som från början kommer från en databas. Den ska visas i ett antal kolumner, säg 3. Från början sparade jag in en tabell i databasen men det känns väldigt bökigt. Istället vill jag parsa via tex php, är det smart?

Hur gör jag?
Jag antar att man ska beräkna antalet tecken i texten och dela på 3, men bryter den inte var som helst då, mitt i ord osv?

// Mvh Erik

Permalänk: https://www.webforum.nu/p/170967

## #2 — Type, 2008-04-22T14:08Z

Jag hittade ett exempel tror jag:

```php
<?php /*________________________________________________________________

lixlpixel PHParadise

_______________________________________________________________________

category :		string handling

snippet :		string to columns

downloaded :	04.22.2008 - 07:02

file URL :		http://www.fundisom.com/phparadise/php/string_handling/string_to_columns

description :	this will "columnize" your long text.
long text, especially on large screens is really hard to read.
thats why in the "real world" newspapers use columns to layout text.

with this script you just paste the text and specify the numbers of columns.
it will split the text into more reader-friendly chunks.

___________________________START___COPYING___HERE__________________*/ ?>

<?php

$marginpercent = 3;
$topmarginpx = 200;
$bgcolor = 'whitesmoke';
$paddingpx = 5;
$seperators = array(' ' => 'words', '. ' => 'sentences', '<p>' => 'paragraphs');
if($_POST['string'])
{
    if($_POST['column']) $columns = $_POST['column'];
    else $columns = 3;
    if($_POST['seperator']) $seperator = $_POST['seperator'];
    else $seperator = ' ';
    $widthpercent = ceil(((100-(2*$marginpercent))/$columns)-2);
    $stringlen = strlen($_POST['string']);
    $percolumn = ceil($stringlen/$columns);
    for($x = 0; $x < $columns; $x++)
    {
        $leftpx = (($x*ceil((100-(2*$marginpercent))/$columns))+$marginpercent);
        $string = stripcslashes(substr($_POST['string'],($percolumn*$x),$percolumn));
        $nextstring = stripcslashes(substr($_POST['string'],($percolumn*($x+1)),$percolumn));
        $nextpos = strpos(strtolower($nextstring),strtolower($seperator));
        $nextword = substr($nextstring,0,($nextpos+strlen($seperator)));
        $string = substr($string,$oldpos,$percolumn);
        $string = $string.$nextword;
        $oldpos = $nextpos+strlen($seperator);
        echo '
    <div style="position:absolute; 
    			left:'.$leftpx.'%; 
    			top:'.$topmarginpx.'px; 
    			padding:'.$paddingpx.'px; 
    			width:'.$widthpercent.'%; 
    			background-color:'.$bgcolor.';">
        ';
        if($x > 0 && $_POST['heightpx']) echo '
        <div style="height:'.$_POST['heightpx'].'px; width:'.$widthpercent.'%;">&nbsp;</div>';
        echo $string;
        echo '
    </div>
';
    }
}else{
    echo '
    <div style="position:absolute; 
    			left:'.$marginpercent.'%; 
    			top:'.$topmarginpx.'px; 
    			padding:'.$paddingpx.'px; 
    			width:'.(100-(2*$marginpercent)).'%; 
    			background-color:'.$bgcolor.';">
        <form method="post" action="'.$_SERVER['PHP_SELF'].'">
        <textarea name="string" cols="70" rows="20"></textarea><br />
        <input type="text" name="column" value="3" size="3" /> columns | text split at 
        <input type="text" name="seperator" size="3" />
        <select name="preset" onchange="seperator.value=this.value">';
     foreach($seperators as $k => $v)
    {
        echo '
            <option value="'.$k.'">'.$v.'</option>';
    }        
    echo '
        </select> | 
        <input type="text" name="heightpx" value="" size="3" /> topmargin on column 1+ | 
        <input type="submit" value="columnize" />
        </form>
    </div>
';
}

?>

<?php /*_____________________END___OF___THE___CODE______________________

get more code from http://www.fundisom.com/phparadise/

___________________________________________________________________*/ ?>
```

Permalänk: https://www.webforum.nu/p/2102545

## #3 — Type, 2008-04-22T14:23Z

Nu har jag fått ett problem. Wordpress som sparar texten lägger till \<p\> och \</p\> före och efter texten. Det kan också hända att de finns i texten. Hur ska jag kunna ta hänsyn till de om jag använder koden ovan? Jag lyckas inte få det att lira riktigt.

Permalänk: https://www.webforum.nu/p/2102547

## #4 — Type, 2008-04-22T15:35Z

Nu har jag löst det tror jag. Så här blir det:

```php
<?php
    $marginpercent = 0;
	$paddingpx = 0;
	$columns = 3;
	$seperator = ' ';
	$data = apply_filters("the_content", $post->post_content);
    
    $widthpercent = ceil(((100-(2*$marginpercent))/$columns)-2);
    $stringlen = strlen($data);
    $percolumn = ceil($stringlen/$columns);
    echo '<table cellpadding="4"><tr>';
    for($x = 0; $x < $columns; $x++)
    {
        $leftpx = (($x*ceil((100-(2*$marginpercent))/$columns))+$marginpercent);
        $string = stripcslashes(substr($data,($percolumn*$x),$percolumn));
        $nextstring = stripcslashes(substr($data,($percolumn*($x+1)),$percolumn));
        $nextpos = strpos(strtolower($nextstring),strtolower($seperator));
        $nextword = substr($nextstring,0,($nextpos+strlen($seperator)));
        $string = substr($string,$oldpos,$percolumn);
        $string = $string.$nextword;
        $oldpos = $nextpos+strlen($seperator);
    
        echo '<td valign="top" width="'.$widthpercent.'%" style="text-align:justify;">';
        if(substr($string,0,3)!="<p>"){
        	echo "<p>";
        }
        echo $string;
        if(substr($string,strlen($string)-4,4)!="</p>"){
        	echo "</p>";
        }
        echo '</td>';
    }   
    echo '</tr></table>';  
?>
```

Permalänk: https://www.webforum.nu/p/2102560

## #5 — Type, 2008-04-23T16:37Z

Jag har inte fått några svar i den här tråden men jag har ett jätteproblem som jag verkligen behöver hjälp med. Jag kör med denna kod ovan och det funkar bra för text. Om jag får för mig att lägga in en bild bland texten lär det ju bli knas. Finns det något bra sätt att lösa det med bilder och text blandat?

Tacksam för hjälp.

Permalänk: https://www.webforum.nu/p/2102863

## #6 — Type, 2008-04-24T17:57Z

Jag funderar lite kring om det är så att man vet hur stor bilden är borde man väl kunna modifiera koden ovan lite o få chans att lägga in bilder. Vad tror ni om detta? Går det att modifiera?

Permalänk: https://www.webforum.nu/p/2103150

---

Tråden på webben: https://www.webforum.nu/amne/php/170967-visa-kod-i-flera-kolumner
