我有一个php页面,它应该动态创建日历的ics文件,并从数据库中提取内容。在大多数情况下,这很好,但描述引起了问题。
当我在Notepad ++中检查文件时,我可以定期看到xAO,我认为它低至75个八位字节的限制 - 这导致在Outlook中查看时两个单词一起运行。
我如何在php中控制它,以便它输出到下一次而不是一起运行这两个单词?我已经尝试了str_replace
,其中有许多变体可以获得\n
字符串或\\n
,但无济于事。
其次,段落之间有CRLF
个。同样,我无法找到替换来处理这个问题,并且它会在此时停止输出(即切断ics文件中的任何进一步细节)。
以下是我在研究中从很多不同来源经历的一些代码示例
//$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);
答案 0 :(得分:1)
我设法得到了这两个问题的答案。对于其他发现此问题的人,以下内容对我有用:
$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