[PHP] Bug met Subtr ( )

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dedgeh
  • Registratie: Februari 2005
  • Laatst online: 29-08 15:19
Hey, ik ben een script aan het maken om heel simpel een DVD-Hoesje te kunnen maken. Nu wil ik ook een klein verhaaltje op de achterkant van het hoesje. Dit moest ik met substr() doen. Dit ging aardig. Ik wil de eerste 50 karakters op de eerste regel, daarna de 2de 50 etc. Maar

Het werkt bijna correct:

Dit is de code:
PHP:
1
2
3
4
5
6
7
8
$string = $_POST['verhaal'] ;

imagettftext ( $im, $fverhaal, $hverhaal, $xverhaal, $yverhaal, $fontcolor, 
                    $font, substr($string,0,50)); 
imagettftext ( $im, $fverhaal, $hverhaal, $xverhaal, $yverhaal+10, $fontcolor, $font, 
                    substr($string,50,100)); 
imagettftext ( $im, $fverhaal, $hverhaal, $xverhaal, $yverhaal+20, $fontcolor, $font, 
                    substr($string,100,150));

Dit is de tekst:
Mogelijk zijn ze hier door een typefout terechtgekomen. Maar deze URL kan ook een poging zijn om u naar een website te lokken, waarvan u onterecht denkt dat het een vertrouwde site is.

Dit komt eruit:
http://img201.imageshack.us/my.php?image=indexgu4.png
http://img201.imageshack.us/img201/6928/indexgu4.png

Zin 1 lijkt de te kloppen. Maar Zin 2 pakt ook een stuk van zin 3... En het lijkt erop dat Zin 3 ook een stuk laat die die in zin 4 moet komen.

[ Voor 11% gewijzigd door een moderator op 30-12-2006 17:43 . Reden: ff code tags eromheen gezet :) ]


Acties:
  • 0 Henk 'm!

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 19:48

pistole

Frutter

Description

string substr ( string string, int start [, int length] )
Dus niet string, startpos, endpos zoals jij doet.

Kijk verder ook even hier, en misschien moet je gewoon eens op de lengte van de string letten.

[ Voor 3% gewijzigd door pistole op 30-12-2006 17:25 ]

Ik frut, dus ik epibreer


Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Move naar Programming

Acties:
  • 0 Henk 'm!

  • Dedgeh
  • Registratie: Februari 2005
  • Laatst online: 29-08 15:19
Een vriend kon me helpen. En het is gelukt. Met de volgende code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$regel = 0;
$regelafstand = 12;
$regelbreedte = 40;
$aantal_karakters = strlen($_POST['verhaal']);
$start = 0;
$max_regels = 10;

while ( $start < $aantal_karakters ) {
    
imagettftext ( $im, $fverhaal, $hverhaal, $xverhaal, $yverhaal + $regel, $fontcolor, $font, substr($_POST['verhaal'],$start,$regelbreedte));
        
        $start = $start + $regelbreedte;    
        $regel = $regel + $regelafstand;
        
        
// Breek af als het maximum aantal regels is bereikt
        if ( ($regel / $regelafstand) == $max_regels ) {
            break;  
        }   
}

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Waarom gebruik je niet gewoon wordwrap daarvoor?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Omdat hij de stukjes wilt "behandelen". Een Break is namelijk niet mogelijk wanneer je een plaatje maakt en daar tekst op zet.

Acties:
  • 0 Henk 'm!

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 23:54

Jrz

––––––––––––

Depress schreef op zondag 31 december 2006 @ 11:17:
Omdat hij de stukjes wilt "behandelen". Een Break is namelijk niet mogelijk wanneer je een plaatje maakt en daar tekst op zet.
Je kan toch het result splitten op \n?

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


Acties:
  • 0 Henk 'm!

  • Dedgeh
  • Registratie: Februari 2005
  • Laatst online: 29-08 15:19
Ik weet totaal niks van PHP. En ben allang blij dat het werkt. Maar als je mijn result split. Dan kan de tekst buiten het DVD hoesje komen. En dat lijkt me niet echt tof -.-
Of heb ik dat mis? ;p

[ Voor 6% gewijzigd door Dedgeh op 31-12-2006 13:51 ]


Acties:
  • 0 Henk 'm!

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 23:54

Jrz

––––––––––––

Ik weet ook niets van php hoor :)
Maar dat wordwrap geeft een string terug met enters op bijv 80 karakters.
En als je dan die string met split() volgens mij? :) op \n, dan krijg je toch een array van strings met max 80 letters. Dan heb je in elk geval een mooie afbreking van je woorden.

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 01:02
Jrz schreef op zondag 31 december 2006 @ 16:54:
Ik weet ook niets van php hoor :)
Maar dat wordwrap geeft een string terug met enters op bijv 80 karakters.
En als je dan die string met split() volgens mij? :) op \n, dan krijg je toch een array van strings met max 80 letters. Dan heb je in elk geval een mooie afbreking van je woorden.
explode() is voldoende, regex functionaliteit van split() heb je hier niet nodig, maar dat lijkt me inderdaad een mooiere oplossing.
Pagina: 1