如何避免/解决PHP wordwrap删除空格

时间:2018-02-25 03:27:26

标签: php string formatting icalendar word-wrap

对于我正在处理的iCal生成器,我需要确保每个75个字符,一个字符串被打破如下:

$string = "This is a long text. I use this text to demonstrate the PHP wordwrap function.";
$newstring = wordwrap($string, 75, "\r\n ", TRUE);

echo($newstring);

结果:

This is a long text. I use this text to demonstrate the PHP wordwrap
 function.

iCal将第一个空格(来自wordwrap break参数)解释为text属性继续的指示符。

wordwrap函数删除了第二个空格(来自字符串)。解码iCal内容后,文本将如下所示:

This is a long text. I use this text to demonstrate the PHP wordwrapfunction.

我该如何解决这个问题?我不想要字符串中的空格(" wordwrap"" function")被删除。

2 个答案:

答案 0 :(得分:0)

我必须改用chunk_split。它将保留空间,也不会试图包裹在我不需要的空间。

$string = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaannnnnn";
$newstring = rtrim(chunk_split($string, 75, "\r\n "), "\r\n ");

echo($newstring);

保留空间:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  aaaaannnnnn

rtrim也被使用,因为chunk_split始终附加end

然而,这不会计算end内的空间。因此,如果有多行,实际上可能有76个字符长。我将chunklen参数更改为74,因为这对我的用例来说已经足够了。

答案 1 :(得分:0)

好的,在执行wordwrap传递额外的空间时,wordwrap和function之间的空间将被保留。

使用此

$newstring = wordwrap($string, 75, " \r\n", TRUE);

而不是

$newstring = wordwrap($string, 75, "\r\n", TRUE);

iCal之前的输出:

This is a long text. I use this text to demonstrate the PHP wordwrap 
function.

iCal之后的输出:

This is a long text. I use this text to demonstrate the PHP wordwrap function.