对于我正在处理的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")被删除。
答案 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.