PHP GD Wörter pro Zeilen ausgeben?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfragen
auslese
bild
casino
check
code
funktion
header
http
image
last
post
schleife
stelle
text
umsetzen
url
welt
zeichen
zeile
-
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 ausHallo Welt. Hallo Welt.
nunHallo 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); ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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; }
-
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.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage