PHP中的自动换行不能正常工作


Wordwrap in PHP not functioning as expected

我有一个来自旧主机表的LONG(720个字符)字符串。由于他们使用留白作为在绿色屏幕上布局文本的一种方法,其中有大量的空白。

我试图通过在PHP中使用换行来模拟绿屏外观(下面的代码)。我试过直接在代码中使用字段的调用(而不是使用$指令)。

我已经尝试将该结果转换为htmlentities,然后nl2br的结果。

我已经尝试将空白转换为非中断空间。

我已经尝试将特殊字符替换为其他东西(只是作为测试)

我甚至尝试将字符的数量改为4,在这种情况下,所有的地狱都破裂了,它似乎只在空白处切割东西,无论在空白之前或之后的字符组中有多少字符。

但是,在该字符串的文本中有一个段:

"1: B-140(GR) ON 140VHF F1 W/"A ZONE (#) GENERAL ALARM" T & L2: REPEAT STEP 1." 

应在L和2之间断开(一般报警T &L 2。等等)。即使将切布尔值设置为true,它也拒绝将L2:切成两行。(即使将字符数量移动到61甚至63)字符串也不会将"L2:"段分开。它要么只在空格处的L之前剪切,要么在空格处的冒号之后剪切。

CODE
$instructions = (wordwrap($instructions,60, "<br />'n", true));

我错过了什么?(寻找隐藏的摄像头)

根据wordwrap的文档:如果cut设置为TRUE,则字符串总是在指定宽度之前进行包装。换句话说,这个函数不适合这个特定的应用程序。

另一种方法是使用str_split,它生成一个精确切割为60个字符的元素数组:

$instructions = '1: B-140(GR) ON 140VHF F1 W/"A ZONE (#) GENERAL ALARM" T & L2: REPEAT STEP 1.';
$instructions_array = str_split($instructions, 60);
foreach ($instructions_array as $line) {
    echo $line."<br />'n";
}