Php 自动换行代码在任意点剪切文本
我使用PHP和GD库生成一个代码,该代码接收一个字符串作为输入,并将其拆分成若干行,以便可以放入图像中。问题是,根据我键入的文本,它会在一个随机点停止。例如,使用以下文本作为输入: 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡 输出图像如下所示: 我的代码是:Php 自动换行代码在任意点剪切文本,php,gd,word-wrap,Php,Gd,Word Wrap,我使用PHP和GD库生成一个代码,该代码接收一个字符串作为输入,并将其拆分成若干行,以便可以放入图像中。问题是,根据我键入的文本,它会在一个随机点停止。例如,使用以下文本作为输入: 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡 输出图像如下所示: 我的代码是: <?php function createStory($content){
<?php
function createStory($content){
$text = $content;
$jpg_image = imagecreatefromjpeg('imagebuilder/footage/story1.jpg');
$white = imagecolorallocate($jpg_image, 255, 255, 255);
$font_path = 'Arial.ttf';
$words = explode(" ",$text);
$proccessedtext = "";
$line = "";
$line .= $words[0] . " ";
for($i = 1; $i < count($words); $i++){
$bbox = imagettfbbox(25, 0, $font_path, $line);
$width = $bbox[4]-$bbox[0];
if($width<700){
$line .= $words[$i] . " ";
}else{
$proccessedtext .= $line . " \n".$words[$i]. " ";
$line = "";
}
}
imagettftext($jpg_image, 25, 0, 75, 600, $white, $font_path, $proccessedtext);
imagejpeg($jpg_image, "imagebuilder/created/readyStory.jpg");
imagedestroy($jpg_image);
return("/imagebuilder/created/readyStory.jpg");
}
?>
我的代码中有错误吗?还是库中有bug?很简单:请注意,
$processedText
在超出最大宽度之前不会接收$line
的内容!因此,在任何给定的时间,它只会收到一整行加上溢出的一个单词。因此,如果剩下的文本没有超出当前行一个额外的单词,那么还有剩余的文本需要处理。尝试添加$processedText.=$line代码>直接位于for循环之后:
<?php
function createStory($content){
$text = $content;
$jpg_image = imagecreatefromjpeg('imagebuilder/footage/story1.jpg');
$white = imagecolorallocate($jpg_image, 255, 255, 255);
$font_path = 'Arial.ttf';
$words = explode(" ",$text);
$proccessedtext = "";
$line = "";
$line .= $words[0] . " ";
for($i = 1; $i < count($words); $i++){
$bbox = imagettfbbox(25, 0, $font_path, $line);
$width = $bbox[4]-$bbox[0];
if($width<700){
$line .= $words[$i] . " ";
}else{
$proccessedtext .= $line . " \n".$words[$i]. " ";
$line = "";
}
}
$processedText .= $line;
imagettftext($jpg_image, 25, 0, 75, 600, $white, $font_path, $proccessedtext);
imagejpeg($jpg_image, "imagebuilder/created/readyStory.jpg");
imagedestroy($jpg_image);
return("/imagebuilder/created/readyStory.jpg");
}
?>