PHP中的Wordwrap无法按预期运行

时间:2014-03-26 20:03:16

标签: php string

我有一个来自旧主机表的LONG(720个字符)字符串。由于使用白色空间作为在绿色屏幕上布置文本的方法,因此其中有一些TON的空白区域。

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

我已尝试将该结果转换为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.等)。即使将cut boolean设置为true,它也拒绝将L2:切成两行。 (即使将字符数量移动到61或甚至63),字符串也不会将“L2:”段分开。它只能在白色空间的L之前切割,或者在白色空间的冒号之后切割。

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

我错过了什么? (寻找隐藏的相机)

1 个答案:

答案 0 :(得分:0)

根据documentation for wordwrap: “如果剪切设置为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";
}