You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP wordwrap函数将字符串转为数组适配GD图像处理

实现文本换行并转为数组的PHP方案

方法1:借助wordwrap + explode快速实现

先用wordwrap以换行符为分隔符处理文本,再用explode拆分出数组,适合快速实现需求:

$str = 'Long Text with line breaks, line 1, Line 2, Line 3';
// 用系统换行符作为分隔符处理文本,第四个true参数可强制拆分超长单词
$wrappedStr = wordwrap($str, 25, PHP_EOL, true);
// 按换行符拆分转为数组
$lineArray = explode(PHP_EOL, $wrappedStr);

// 输出结果
print_r($lineArray);

执行后会得到你期望的数组结构:

Array
(
    [0] => Long Text with line breaks
    [1] => line 1, Line 2, Line 3
)

方法2:自定义函数精准控制(更适配GD绘图)

如果需要避免单词被截断(GD绘图时断词会影响视觉效果),可以写自定义函数按单词拆分:

function textToLineArray($text, $maxLineLength) {
    $lines = [];
    $currentLine = '';
    $words = explode(' ', $text);

    foreach ($words as $word) {
        // 检查当前行拼接单词后是否超出长度
        if (strlen($currentLine . ' ' . $word) > $maxLineLength && $currentLine !== '') {
            $lines[] = trim($currentLine);
            $currentLine = $word;
        } else {
            $currentLine .= ($currentLine ? ' ' : '') . $word;
        }
    }
    // 加入最后一行内容
    if ($currentLine !== '') {
        $lines[] = trim($currentLine);
    }

    return $lines;
}

// 使用示例
$str = 'Long Text with line breaks, line 1, Line 2, Line 3';
$lineArray = textToLineArray($str, 25);
print_r($lineArray);

适配GD绘图的小提示

循环数组时,用imagettftext逐行绘制,记得每次循环递增Y轴坐标,确保行与行不重叠。

内容的提问来源于stack exchange,提问作者tundewoods

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 18:14:51