Тип данных iCalendar TEXT - подготовка значений с помощью PHP - PullRequest
0 голосов
/ 31 мая 2011

Я предоставляю ссылки для загрузки событий моего приложения. Одна часть, которую мне не хватает, это как подготовить значения для типа данных TEXT . В частности, значение, которое в итоге будет иметь свойство DESCRIPTION, имеет HTML. Я скачал несколько проектов PHP, связанных с iCalendar RFC, но я не нашел хороший фрагмент кода для подготовки TEXT значений.


Я нашел запись в блоге , которая была доступна только в в Google Cache , с переносом строк, и я заметил, что при создании файла ICS из Outlook 2010 перенос строк, но я ' я пока оставлю это в покое и вернусь к нему, если возникнет проблема.

Я также решил добавить поддержку для различных возможных окончаний строки:

/**
 * 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);
}

1 Ответ

1 голос
/ 31 мая 2011

Обратите внимание на сочетание одинарных и двойных кавычек для переноса строки (двойные кавычки интерпретируют разрывы строк, а одиночные - нет)

$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..

...