[PHP] Tekst in een schuin vlak

Pagina: 1
Acties:
  • 147 views sinds 30-01-2008
  • Reageer

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 07:56

vanDaal

-ismeereentje

Topicstarter
Hey mensen,

Ik ben even aan het denken, maar ik kan eigenlijk geen slimme oplossingen verzinnen. Misschien dat jullie kunnen helpen :)
Okee, ik heb een schuin vlak waar ik tekst in wil zetten. Het is een vlak als hieronder.

Afbeeldingslocatie: http://www.hetrsg.nl/lustrum/temp/schuinkader.gif

Daar moet dus tekst in komen te staan. En ik géén zin om overal spaties te gaan zetten ;). Iemand een intelligente oplossing? Misschien iets met php?

edit:

Hopelijk is deze minder brak

  • Kawa
  • Registratie: Juni 2001
  • Laatst online: 17:52
Tekst mischien in plaatje zetten ;)

Verwijderd

is dit een script request?

Hoogstwaarschijnlijk zal je uitkomen op een JSje dat de spaties automagisch toevoegt, of de lines op aparte regels neerzet en clipt.

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 07:56

vanDaal

-ismeereentje

Topicstarter
Op dinsdag 18 september 2001 22:47 schreef Kawa het volgende:
Tekst mischien in plaatje zetten ;)
Had ik al aan gedacht. Maar het is niet handig. Te veel werk, te groot (in kaabeetjes) en dan kan ik nog gaan spatien (in Photoshop dan). :)

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 07:56

vanDaal

-ismeereentje

Topicstarter
Op dinsdag 18 september 2001 22:48 schreef Razor_Blade het volgende:
is dit een script request?
Niet dat ik weet :)
Hoogstwaarschijnlijk zal je uitkomen op een JSje dat de spaties automagisch toevoegt, of de lines op aparte regels neerzet en clipt.
Probleem is dat je niet weet wanneer een nieuwe regel begint, dus je weet niet wanneer je spaties moet toevoegen.

  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

Ik zou een tabel maken met dat plaatje als achtergrond in een cel, en dan de tekst verdelen over onder elkaar staande div's, met elke weer iets meer right-margin, maar blijft omslachtig.

Verwijderd

Bottom line is dat je niet ontkomt aan het handmatig positioneren.

Kijk anders ff op http://www.astrolove.nl/framesLogin.htm. Daar heb ik dat ook ooit eens gedaan.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op woensdag 19 september 2001 09:53 schreef Blues het volgende:
Bottom line is dat je niet ontkomt aan het handmatig positioneren.

Kijk anders ff op http://www.astrolove.nl/framesLogin.htm. Daar heb ik dat ook ooit eens gedaan.
offtopic:
Geweldig ontwerp! Mijn complimenten! (mocht je het zelf gemaakt hebben, anders de complimenten aan de graficus ;))


Ik denk dat je met de div's idd een heel eind komt. Met PHP kun je de string natuurlijk splitten met een leuk functietje, en daaromheen in een for-loopje de div's zetten met style="margin-left:{$nr}px"

* drm flanst even wat in elkaar
(non-tested ofcourse)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
define ( "WIDTH",        15 ); // aantal characters per regel
define ( "START_POINT",  200 ); // horizontaal startpunt ( hoek linksbovenin ), oftwel initiele linkermarge
define ( "FACTOR",       12  ); // aantal pixels per regel naar links

function formatString ( $string )
{
   $lines = array ();
   for ( $a = 0; $a < count ( $string ); $a ++ )
   {
      $tmpStr[] = $string [ $a ];
      if ( ( $a % WIDTH ) == 0 &amp;amp;&amp;amp; $a != 0 )
      {
         $lines [] = $tmpStr;
         $tmpStr = "";
      }
   }
   for ( $a = 0; $a < count ( $lines ); $a ++ )
   {
      $lines [ $a ] = "<div style='margin-left:" . START_POINT - ( $a * FACTOR ) . "px'>" . $lines [ $a ] . "</div>";
   }
   return $lines;
}
?>

:? zoiets?

edit:

moet je alleen zelf nog even een algoritmetje in pleuren (regex ofzo) waarbij de woorden niet zo abrupt afgebroken worden *D

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Op woensdag 19 september 2001 10:12 schreef drm het volgende:
offtopic:
Geweldig ontwerp! Mijn complimenten! (mocht je het zelf gemaakt hebben, anders de complimenten aan de graficus ;))
Muchos gracias. :D Ik heb het zeker niet in m'n eentje gebouwd, maar het ontwerp is wel van mijn hand.
[..] Met PHP kun je de string natuurlijk splitten met een leuk functietje, en daaromheen in een for-loopje de div's zetten met style="margin-left:{$nr}px"
Da's best een goed idee, denk ik.

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 07:56

vanDaal

-ismeereentje

Topicstarter
Op woensdag 19 september 2001 02:52 schreef 2 het volgende:
Ik zou een tabel maken met dat plaatje als achtergrond in een cel, en dan de tekst verdelen over onder elkaar staande div's, met elke weer iets meer right-margin, maar blijft omslachtig.
Yep, en dan moet het ook weer handmatig...
Op woensdag 19 september 2001 09:53 schreef Blues het volgende:
Bottom line is dat je niet ontkomt aan het handmatig positioneren.
Er is een klein verschil. Ik wil bij elke regel dat ie iets verder naar links inspringt. En dat is juist het lastige. Bij de bovenstaande site is het meer in blokken verdeeld (die wel recht onder elkaar staan).

Verwijderd

Op woensdag 19 september 2001 09:53 schreef Blues het volgende:
Bottom line is dat je niet ontkomt aan het handmatig positioneren.

Kijk anders ff op http://www.astrolove.nl/framesLogin.htm. Daar heb ik dat ook ooit eens gedaan.
offtopic:
Blijft toch een verrekte mooie site Blues

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 07:56

vanDaal

-ismeereentje

Topicstarter
Op woensdag 19 september 2001 10:12 schreef drm het volgende:
Ik denk dat je met de div's idd een heel eind komt. Met PHP kun je de string natuurlijk splitten met een leuk functietje, en daaromheen in een for-loopje de div's zetten met style="margin-left:{$nr}px"

[..code..]
Hee, dat is toevallig, ik had ongeveer hetzelfde. Alleen is mijn code iets dirtier :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?
    $tekst = "Hier staat een hele lap tekst (met <br>'en ertussen)";
    $len_tekst = strlen($tekst) . "<BR><BR>";
    // echo $len_tekst;
    // Aantal resultaten per keer
    $s = 65;
    $i = 35;
    $u = 65;

    // Display paginaindex boven
    for ($t = 0; $v < $len_tekst; $t=$t+$s)
    {
        $onderzoek_tekst = substr ($tekst,$t,$u);
        $s = strrpos($onderzoek_tekst, " ");    
        $plaats_tekst = substr ($tekst,$t,$s);
        


        if (!strchr($plaats_tekst,"<br>"))
        {
            // $i = $i - ($j*2);
            $stijl = "font:11px/20px verdana, arial, helvetica, sans-serif;  margin : 0 0 16px; padding:0; color:#3E0200; text-indent:" . $i . "ex; line-height:4px;";
            echo "<P ALIGN=\"justify\" STYLE=\"" . $stijl . "\">" . $plaats_tekst . "</P>\n";
            $i = $i-2;
        }
        $v = $t+$u;

        if (strchr($plaats_tekst,"<br>"))
        {
            $j = substr_count($plaats_tekst, "<br>"); 
            for ($d = 0; $d < $j; $d++)
            {
                $i = $i-2;
                $stijl = "font:11px/20px verdana, arial, helvetica, sans-serif;  margin : 0 0 16px; padding:0; color:#3E0200; text-indent:" . $i . "ex; line-height:4px;";
                $plaats_tekst = ereg_replace ("<br>", "</P><P ALIGN=\"justify\" STYLE=\"" . $stijl . "\">", $plaats_tekst);
            }    
            $i = $i+2;
            $stijl = "font:11px/20px verdana, arial, helvetica, sans-serif;  margin : 0 0 16px; padding:0; color:#3E0200; text-indent:" . $i . "ex; line-height:4px;";
            echo "<P ALIGN=\"justify\" STYLE=\"" . $stijl . "\">" . $plaats_tekst . "</P>\n";
            $i = $i-2;
        }        
    }    
?>

Het resultaat is (op dit moment) hier te vinden. Maar ik ben er nog mee bezig, dus het kan anders worden.
edit:

moet je alleen zelf nog even een algoritmetje in pleuren (regex ofzo) waarbij de woorden niet zo abrupt afgebroken worden *D
Ja, op dat probleem stuitte ik dus ook :(. De bovenstaande functie heeft inderdaad zoiets ingebouwd, maar het klopt helaas nog niet. Probleem is namelijk dat ie bij een regelonderbreking (dus door een
) opnieuw een regel van 65 characters moet gaan definieren. En daar ben ik nog niet uit...

[bijdeweg]
Het css is er volgens mij wel vanaf, van mij mag ie naar P&W
[/bijdeweg]

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Ik denk dat je het beste dmv. een split alle woorden uit de tekst kan halen, om vervolgens in plaats van per letter per woord een for-loopje te doorlopen.

En ik denk dat je ipv. <br> je beter met newlines kan werken. Behandel het zoveel mogelijk als platte tekst.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

vanDaal:
[bijdeweg]
Het css is er volgens mij wel vanaf, van mij mag ie naar P&W
[/bijdeweg]
Dit kun je [bijdeweg] ;) in /26 (SU) vragen
(is nu al gebeurd)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • TheMrH
  • Registratie: April 2000
  • Laatst online: 01-09 22:45
En what about de functie wordwrap() ?
wordwrap
(PHP 4 >= 4.0.2)

wordwrap -- Wraps a string to a given number of characters using a string break character.
Description

string wordwrap (string str [, int width [, string break [, int cut]]])


Returns a string with str wrapped at the column number specified by the (optional) width parameter. The line is broken using the (optional) break parameter.

wordwrap() will automatically wrap at column 75 and break using '\n' (newline) if width or break are not given.

If the cut is set to 1, the string is always wrapped at the specified width. So if you have a word that is larger than the given width, it is broken apart. (See second example).

Note: The cut parameter was added in PHP 4.0.3.
http://www.php.net/manual/en/function.wordwrap.php

The box said 'requires Windows 95 or better', so I installed Linux...


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Ik zat er inderdaad gisteravond nog aan te denken.
Maar een probleem met word-wrap is, dat je uiteindelijk nog niet weet waar je de <div>'s neer moet zetten.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • vanDaal
  • Registratie: November 1999
  • Laatst online: 07:56

vanDaal

-ismeereentje

Topicstarter
Op donderdag 20 september 2001 09:33 schreef drm het volgende:
Ik zat er inderdaad gisteravond nog aan te denken.
Maar een probleem met word-wrap is, dat je uiteindelijk nog niet weet waar je de <div>'s neer moet zetten.
Dat dacht ik ook. Maar.... het is wel mogelijk :)

Ik heb de word-wrap functie even goed doorgekeken (en de commentaren die erbij werden gegeven) en het blijkt dat je elke nieuwe regel in een array kunt zetten. Dus dan is het wel mogelijk. Zie de onderstaande functie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
    function hardbreak($text,$width=80,$delim=" ") 
    { 
        $res_array=array(); 
        while (strlen($text)>0) 
        { 
            $piece=substr($text,0,$width); 
            $last_space=strrpos($piece,$delim); 
            if ((strlen($text)<=$width) or !$last_space) 
            
                $last_space=$width; // force a break! 
                $res_array[]=substr($text,0,$last_space); 
                $text=trim(substr($text,$last_space+1)); 
        } // while 
    return $res_array; 
    } 

    $text="Het is eind september, het collegejaar is inmiddels weer in volle gang. Wat is dan heerlijker om je een week te laten meevoeren op de wereldzeeën van 'wijn en waanzin', weg van alle logica, theorie en realiteit."; 
    $array_tekst = hardbreak($text,70); 
    $len_array_tekst = count($array_tekst);
    
    $i=50;

    for ($t = 0; $t < $len_array_tekst; $t++)
    {    
        $stijl = "font:11px/20px verdana, arial, helvetica, sans-serif;  margin : 0 0 16px; padding:0; color:#003262; text-indent:" . $i . "ex; line-height:4px;";
        echo "<P ALIGN=\"justify\" STYLE=\"" . $stijl . "\">" . $array_tekst[$t] . "</P>\n";
        $i=$i-2;
    }
?>

Alleen nu zit ik nog steeds met het vertalen van \n naar nieuwe regels. Ik ben er mee bezig, maar heb je toevallig een ideetje? :)

-offtopic-
Nog bedankt voor het verplaatsen en renamen van dit topic!
-/offtopic-

Verwijderd

Van \n naar <br> doe je met de prachtige functie nl2br
PHP:
1
2
3
<?
$stringnaam = nl2br($stringnaam);
?>

http://www.php.net/nl2br

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 07:56

vanDaal

-ismeereentje

Topicstarter
Op donderdag 20 september 2001 14:31 schreef daniel_hoenderdos het volgende:
Van \n naar <br> doe je met de prachtige functie nl2br
PHP:
1
2
3
<?
$stringnaam = nl2br($stringnaam);
?>

http://www.php.net/nl2br
Goh :P
Maar dat wil ik niet. Ik wil niet naar <br> maar naar een nieuwe regel. Een <br> springt namelijk niet in, dus daar moet een CSS element van gemaakt worden (zie bovenstaande functie).
Erg bagger trouwens, want je wilt dat de tekst op een nieuwe regel weer een bepaalde lengte aanneemt en met bovenstaande functie pakt ie eigenlijk maar een gedeelte van een regel (vaag verhaal, maar het klopt wel :))

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Gebruik dan dat stukkie van mij weer:
Op woensdag 19 september 2001 10:12 schreef drm het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
define ( "START_POINT",  200 ); // horizontaal startpunt ( hoek linksbovenin ), oftwel initiele linkermarge
define ( "FACTOR",       12  ); // aantal pixels per regel naar links

$lines = hardbreak ( $text,70 );
for ( $a = 0; $a < count ( $lines ); $a ++ )
{
   $lines [ $a ] = "<div style='margin-left:" . START_POINT - ( $a * FACTOR ) . "px'>" . $lines [ $a ] . "</div>";
}
?>
code ietsjes aangepast naar behoeven. Daar moet het toch wel mee lukken, dan?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

BTW post wel ff een linkje als je klaar bent, ik ben heel erg benieuwd of het lukt :P :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • vanDaal
  • Registratie: November 1999
  • Laatst online: 07:56

vanDaal

-ismeereentje

Topicstarter
Op donderdag 20 september 2001 15:26 schreef drm het volgende:
BTW post wel ff een linkje als je klaar bent, ik ben heel erg benieuwd of het lukt :P :)
Nou, het is me bijna gelukt hoor. Met explode() kwam ik al een heel eind :)

Hierbij ook de code tot nu toe.
Pagina: 1