问题描述
||
我正在提供应用程序事件的下载链接。我缺少的一件事情是如何为
TEXT
数据类型准备值。具体来说,以DESCRIPTION
属性结尾的值具有HTML。我已经下载了几个与iCalendar RFC相关的PHP项目,但是我没有找到准备ѭ0ѭ值的良好代码段。
我找到了一个博客条目,该条目仅在Google Cache中具有换行符,并且我注意到从Outlook 2010生成ICS文件具有换行符,但是我现在暂时不讨论它,如果有,有一个问题。
我还决定增加对不同行尾的支持:
/**
* Prepare data for a TEXT field
*
* @param string $text
* @return string
*/
public static function prepareText($text)
{
$search = array(\'\\\\\',\';\',\',\"\\r\\n\",\"\\n\",\"\\r\");
$replace = array(\'\\\\\\\\\',\'\\;\',\'\\,\'\\n\',\'\\n\');
return str_replace($search,$replace,$text);
}
解决方法
请注意,单引号和双引号混合使用换行符(双引号解释换行符,单引号则不行)
$text = \'Hello,World!
This is in a new line; after a semicolon/comma\';
$search = array(\'/\',\';\',\',\"\\N\",\"\\n\");
$replace = array(\'\\/\',\'\\;\',\'\\,\'\\n\',\'\\n\');
$description = str_replace($search,$replace,$text);
print_r($description);
当然,可以使用可能更简单的RegExp来完成。