我正在制作一个应用程序,让用户使用 GD 图像在图像上书写。图像框具有一定的宽度。当用户写的单词比我的图像框的宽度长时,我遇到了一个问题。我想用递归来拆分这个词,我不是那么专业。这就是我所拥有的。
function cutLongWord($word, $fullwidth, $font, $fontsize){
$arrWords = array();
splitWord($arrWords, $word, $fullwidth, 0, $font, $fontsize);
}
function splitWord(&$arrWords, $word, $fullwidth, $startIndex, $font, $fontsize){
$output = "";
$numStringLength = strlen($word);
for($i = 1; ($i + $startIndex) <= $numStringLength; $i++){
$substring = substr($word, $startIndex, $i);
//dimension of substring
$dimensions = imagettfbbox($fontsize, 0, $font, $substring);
//line width of substring
$subLineWidth = $dimensions[4] - $dimensions[0];
if($subLineWidth <= $fullwidth){
$output = $substring;
}
else {
$arrWords[] = splitWord($arrWords, $word, $fullwidth, ($i - 1), $font, $fontsize);
}
}
return $output;
}
这是一个无限循环。我有点卡住了。如果您能指出我正确的方向,我将不胜感激。
谢谢。