kostenloser Webspace werbefrei: lima-city


PHP GD Wörter pro Zeilen ausgeben?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    Mit meinem Script erstelle ich ein Bild in dem ein Text geschrieben wird nun kann der Text mehrere Zeilen lang sein so das jede Zeile auch noch unterschiedlich lang ist.

    Damit der Text auf das Bild passt soll nach jedem 14 Zeichen ein Zeilenumbruch erstellt werden.
    Mein Problem ist das so nun auch Wörter unterbrochen werden. Zum Beispiel wird aus
    Hallo Welt. Hallo Welt.
    nun
    Hallo Welt. Ha
    llo Welt.


    Ich müsste also per RegEX abfragen ob sich vorher ein Wort befindet oder ob ein Leerzeichen an dreizehnter Stelle ist.
    Nur wie kann ich dem Script sagen ab welcher Stelle er suchen kann?

    Mann könnte sicherlich auch noch per Schleife immer wieder ein Zeichen weniger auslesen lassen und dieses dann überprüfen, aber ich weiß nicht ob das die beste Lösung wäre.

    Hat jemand eine Idee wie man das am einfachsten überprüfen und umsetzen kann?
    <?php
    $img 	=	imageCreateFromPNG('images/men.png');
    ImageAlphaBlending($img, true); 
    ImageSaveAlpha($img, true); 
    
    $color	=	ImageColorAllocate($img, hexdec(0x49), hexdec(0x49), hexdec(0x49));
    $text	=	"Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt.";
    $zeile	=	array();
    $z0		=	14;	// Zeichenlänge pro Zeile
    $z1		=	0;
    $z2		=	$z0;
    $max	=	strlen( $text ) / $z0;
    $height =	80;
    for ( $count = 0; $count < $max; $count++ ) {
    	$zeile[$count]	=	substr( $text, $z1, $z2 );
    	ImageString($img, 5, 290, $height, $zeile[$count], $color); 
    	$height			=	$height + 30;
    	$z1				=	$z2;
    	$z2				=	$z2 + $z0;
    }
    
    header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
    header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
    header( "Cache-Control: no-store, no-cache, must-revalidate" );
    header( "Cache-Control: post-check=0, pre-check=0", false );
    header( "Pragma: no-cache" );
    header( "Content-Disposition: inline; filename=casino-boss.png" );
    header( "Content-Type: image/png" ); 
    
    ImagePNG($img);
    ImageDestroy($img);
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo siteplayer,

    dafür gibt es extra eine Funktion: wordwrap()

    http://www.php.net/manual/de/function.wordwrap.php

    Edit: und danach ein explode() um es zeilenweise zu zerlegen.
    Edit2: Korrektur: explode() natürlich und nicht str_split(), sorry.

    Beitrag zuletzt geändert: 9.1.2011 15:01:04 von darkpandemic
  4. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    Vielen dank =)

    Hab es mit preg_split() gemacht würde mich jetzt mal interessieren welche Funktion schneller ist explode() oder preg_split().
    $color		=	ImageColorAllocate($img, hexdec(0x49), hexdec(0x49), hexdec(0x49));
    $text		=	"Hallo Welt. Hallo Weltreto. Hal. Lo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt. Hallo Welt.";
    $new_text	=	wordwrap( $text, 14, "\n", true );
    $zeile		=	preg_split('/\n/', $new_text);
    $height		=	80;
    for ( $count = 0; $count < sizeof($zeile); $count++ ) {
    	ImageString($img, 5, 290, $height, $zeile[$count], $color); 
    	$height	=	$height + 30;
    }
  5. Ich tippe da mal auf explode().
    Weil reguläre Ausdrücke immer erst in eine Art 'Execution Plan' übersetzt werden, welcher dann auf den String angewendet wird.
    Das fällt bei explode() weg.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!