我正在为我的应用程序事件提供下载链接。我遗失的一件事是如何准备the TEXT
data type的价值观。具体而言,以DESCRIPTION
属性结束的值具有HTML。我已经下载了几个与iCalendar RFC相关的PHP项目,但是我没有找到准备好TEXT
值的一小段代码。
我发现blog entry只有available in 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', '\n');
return str_replace($search, $replace, $text);
}
答案 0 :(得分:1)
注意换行符的单引号和双引号的混合(双引号解释换行符,而单引号则不解释)
$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来完成..