php 创建 ics 文件 - 隐藏字符和换行符中断输出
php creating ics file - hidden characters and line breaks breaking output
我有一个 php 页面,它应该为日历动态创建一个 ics 文件,其中的内容是从数据库中提取的。在大多数情况下这很好,但是描述导致了问题。
当我在 Notepad++ 中检查文件时,我可以定期看到 xAO,我认为它低于 75 个八位字节的限制 - 这导致在 Outlook 中查看时这两个词 运行 在一起。
如何在 php 中控制它以便它输出到下一次而不是 运行 将两个词放在一起?我试过 str_replace
有很多变体来获得 \n
字符串或 \n
但无济于事。
其次,段落之间有CRLF
。同样,我找不到一个替代品来处理这个问题,它会在那时停止输出(即切断 ics 文件中的任何进一步细节)在 Outlook 中被读取。
以下是我在研究中从许多不同来源获得的一些代码示例
//$description = wordwrap($description,39,"\n");
/*$description = str_replace(PHP_EOL,"--",$description);
$description = preg_replace('/\r\n|\r|\n/', "--", $description);
$description = str_replace("\r\n","---",$description);
$description = str_replace("\n","---",$description);*/
$description = htmlentities($description, null, 'utf-8');
$description = str_replace(" ", "\n", $description);
$description = trim($description);
//$description = htmlspecialchars_decode($description);
我设法得到了这两个问题的答案。对于发现此问题的任何其他人,以下内容对我有用:
$description = str_replace("\xA0", " ", $description);//nbsp - make space
$description = str_replace("\x0A", "", $description);//cr - remove
$desc_html = str_replace("\x0D","<br>",$description);//lf - html break
$description = str_replace("\x0D", "\n", $description);//lf - text: escaped new line
$description = strip_tags(htmlspecialchars_decode($description));//clear html for plain text version
我有一个 php 页面,它应该为日历动态创建一个 ics 文件,其中的内容是从数据库中提取的。在大多数情况下这很好,但是描述导致了问题。
当我在 Notepad++ 中检查文件时,我可以定期看到 xAO,我认为它低于 75 个八位字节的限制 - 这导致在 Outlook 中查看时这两个词 运行 在一起。
如何在 php 中控制它以便它输出到下一次而不是 运行 将两个词放在一起?我试过 str_replace
有很多变体来获得 \n
字符串或 \n
但无济于事。
其次,段落之间有CRLF
。同样,我找不到一个替代品来处理这个问题,它会在那时停止输出(即切断 ics 文件中的任何进一步细节)在 Outlook 中被读取。
以下是我在研究中从许多不同来源获得的一些代码示例
//$description = wordwrap($description,39,"\n");
/*$description = str_replace(PHP_EOL,"--",$description);
$description = preg_replace('/\r\n|\r|\n/', "--", $description);
$description = str_replace("\r\n","---",$description);
$description = str_replace("\n","---",$description);*/
$description = htmlentities($description, null, 'utf-8');
$description = str_replace(" ", "\n", $description);
$description = trim($description);
//$description = htmlspecialchars_decode($description);
我设法得到了这两个问题的答案。对于发现此问题的任何其他人,以下内容对我有用:
$description = str_replace("\xA0", " ", $description);//nbsp - make space
$description = str_replace("\x0A", "", $description);//cr - remove
$desc_html = str_replace("\x0D","<br>",$description);//lf - html break
$description = str_replace("\x0D", "\n", $description);//lf - text: escaped new line
$description = strip_tags(htmlspecialchars_decode($description));//clear html for plain text version