Hallo zusammen,
ich war auf der Suche nach einer Möglichkeit, einen Text ab einer bestimmten Breite umzubrechen. Dabei fand ich eine Funktion, die das auch einwandfrei tat. Nun würde ich die Funktion gerne so ändern, dass diese z.B. nur die ersten drei Zeilen ausgibt und die restlichen Zeilen ignoriert. Mit meinen bescheidenen Programmierkenntnissen habe ich dann die variable "$zeile" eingefügt. Aber das funktioniert nicht richtig. So wird nur das erste Wort der letzen gewünschten Zeile ausgegeben.
Das zweite Problem ist, dass ein langes Wort abgeschnitten wird. Ich würde hier aber gerne einen harten Umbruch erzwingen, so das auch ein langes Wort wenn es an die Begrenzung kommt, getrennt wird z.B. "Dampfschifffahrtsgesells" "chaft"
Könnt Ihr mir helfen? Vielen Dank im voraus Hier der script:
ich war auf der Suche nach einer Möglichkeit, einen Text ab einer bestimmten Breite umzubrechen. Dabei fand ich eine Funktion, die das auch einwandfrei tat. Nun würde ich die Funktion gerne so ändern, dass diese z.B. nur die ersten drei Zeilen ausgibt und die restlichen Zeilen ignoriert. Mit meinen bescheidenen Programmierkenntnissen habe ich dann die variable "$zeile" eingefügt. Aber das funktioniert nicht richtig. So wird nur das erste Wort der letzen gewünschten Zeile ausgegeben.
Das zweite Problem ist, dass ein langes Wort abgeschnitten wird. Ich würde hier aber gerne einen harten Umbruch erzwingen, so das auch ein langes Wort wenn es an die Begrenzung kommt, getrennt wird z.B. "Dampfschifffahrtsgesells" "chaft"
Könnt Ihr mir helfen? Vielen Dank im voraus Hier der script:
PHP-Code:
<?php
function wrapText($fontSize, $fontFace, $string, $width)
{
$zeile=0; //neu
$ret = "";
$arr = explode(" ", $string);
foreach($arr as $word)
{
$testboxWord = imagettfbbox($fontSize, 0, $fontFace, $word);
// huge word larger than $width, we need to cut it internally until it fits the width
$len = strlen($word);
while($testboxWord[2] > $width && $len > 0)
{
$word = substr($word, 0, $len);
$len--;
$testboxWord = imagettfbbox($fontSize, 0, $fontFace, $word);
}
$teststring = $ret . ' ' . $word;
$testboxString = imagettfbbox($fontSize, 0, $fontFace, $teststring);
if ($zeile<3) //neu
{ //neu
if(($testboxString[2] > $width) )
{
$ret.=($ret == "" ? "" : "\n") . $word;
$zeile++; //neu
}
else
{
$ret.=($ret == "" ? "" : ' ') . $word;
}
} //neu
}
return $ret;
}
$size=14;
$breite=200;
$bild = imagecreatetruecolor(640, 480);
$intern="arial.ttf";
$weiss = imagecolorallocate($bild, 255, 255, 255);
$blau = imagecolorallocate($bild, 13, 0, 184);
imagefill($bild, 0, 0, $weiss);
$text="Das ist ein test um zu prüfen, ob ein Wortumbruch auch korrekt stattfindet. Das Wort Dampfschifffahrtsgesellschaft wird abgeschnitten.";
$wrap = wrapText($size, $intern, $text, $breite);
imagettftext($bild, $size, 0, 100, 100, $blau, $intern, $wrap);
header("Content-type: image/png");
imagepng($bild);
imagedestroy($bild);
?>
Kommentar