while 语句内的自动换行

Wordwrap inside of while statement

基本上,我有一个 while 语句,我想这样做,如果选择的文本太长,它会每 20 个字符左右添加一个中断。

我已经尝试过了,但是没有用。主要问题是在移动设备上,如果文本超过 20 个字符,它将超出分隔线。

我的整个 While 语句:

while ($field = $result->fetch_assoc()) {
    if ($columnCount < 10) {
        $text = $field["text"];
        $newtext = wordwrap($text, 20, "<br />\n");
        echo '
            <div class="well">
                <div class="row">
                    <div class="col-xs-10">
                        '.$newtext.'<br /><br /><a class="link" href="view.php?id='.$field["id"].'"><b>'.$field["name"].'</b> - '.time_elapsed_string($field["timestamp"]).'</a>
                    </div>
                    <div class="col-xs-2 text-center counter">
                        <form action="like.php?id='.$field["id"].'" method="POST" style="margin-bottom:0px;margin-top:-8%;">
                            <button class="btn btn-primary btn-sm" type="submit" name="submit" id="submit">&#9650</button><br />
                            <input type="hidden" name="id" value="'.$field["id"].'">
                        </form>
                        <div class="well well2 text-center" style="padding:0px;margin-bottom:0px;width:100% !important;">
                            '.$field["likes"].'
                        </div>
                        <form action="dislike.php?id='.$field["id"].'" method="POST">
                            <button class="btn btn-primary btn-sm" type="submit" name="submit" id="submit">&#9660;</button><br />
                            <input type="hidden" name="id" value="'.$field["id"].'">
                        </form>
                    </div>
                </div>
            </div>';
        $columnCount++;
    }
}

我尝试过,但不确定如何让它正常工作。这里没有错误,它会和文本一起出现,但是在20个字符左右之后不会出现任何换行。

这是显示的结果之一的图像,超过 20 个字符且没有中断。如果我查看源代码,也没有中断。

编辑:我想 post 在手机上拍一张它的图片,但我现在不能。基本上文本将完全超出方框而不会留在里面。它会离开页面和所有内容。

尝试:

$newtext = wordwrap($text, 20, "<br />\n", true);

无论如何都需要true来强制断开长字符串。

PHP docs for wordwrap 中有更多详细信息。

或者你可以try chunk_split