可以使用wordwrap功能和explode函數來截斷字符串中的多個陣列的文本,然後將其打印:
$word = explode("\n", wordwrap ("A funny string that I want to wrap", 10));
你得到這樣的輸出:
array(5) {
[0]=>
string(7) "A funny"
[1]=>
string(6) "string"
[2]=>
string(6) "that I"
[3]=>
string(7) "want to"
[4]=>
string(4) "wrap"
}
能比嗎詳細說明它(切割文本,在不同行上打印每個字符串等)。
例(新行打印):
...
$dimensions = imagettfbbox(20, 0, $fontname, $textfromdb);
$y = imagesy($imageCreator) - 228;
$text = explode("\n", wordwrap($textfromdb, 20)); // <-- you can change this number
$delta_y = 0;
foreach($text as $line) {
$delta_y = $delta_y + $dimensions[3];
imagettftext($imageCreator, 20, 0, 0, $y + $delta_y, $textColor, $fontname, $line);
}
...
要居中垂直和水平:
...
$dimensions = imagettfbbox(20, 0, $fontname, $textfromdb);
$margin = 10;
$text = explode("\n", wordwrap($textfromdb, 20)); // <-- you can change this number
$delta_y = 0;
//Centering y
$y = (imagesy($imageCreator) - (($dimensions[1] - $dimensions[7]) + $margin)*count($text))/2;
foreach($text as $line) {
$dimensions = imagettfbbox(20, 0, $fontname, $line);
$delta_y = $delta_y + ($dimensions[1] - $dimensions[7]) + $margin;
//centering x:
$x = imagesx($imageCreator)/2 - ($dimensions[4] - $dimensions[6])/2;
imagettftext($imageCreator, 20, 0, $x, $y + $delta_y, $textColor, $fontname, $line);
}
...
你怎麼竟想以適應嗎?插入換行符?改變字體大小等? – Salman
我更喜歡換行符,但是如果字符串實際上大於圖像寬度,那麼必須減小字體大小! – defiant