1<?php 2 3namespace Sabre\VObject; 4 5/** 6 * iCalendar/vCard/jCal/jCard/xCal/xCard reader object. 7 * 8 * This object provides a few (static) convenience methods to quickly access 9 * the parsers. 10 * 11 * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 12 * @author Evert Pot (http://evertpot.com/) 13 * @license http://sabre.io/license/ Modified BSD License 14 */ 15class Reader 16{ 17 /** 18 * If this option is passed to the reader, it will be less strict about the 19 * validity of the lines. 20 */ 21 const OPTION_FORGIVING = 1; 22 23 /** 24 * If this option is turned on, any lines we cannot parse will be ignored 25 * by the reader. 26 */ 27 const OPTION_IGNORE_INVALID_LINES = 2; 28 29 /** 30 * Parses a vCard or iCalendar object, and returns the top component. 31 * 32 * The options argument is a bitfield. Pass any of the OPTIONS constant to 33 * alter the parsers' behaviour. 34 * 35 * You can either supply a string, or a readable stream for input. 36 * 37 * @param string|resource $data 38 * @param int $options 39 * @param string $charset 40 * 41 * @return Document 42 */ 43 public static function read($data, $options = 0, $charset = 'UTF-8') 44 { 45 $parser = new Parser\MimeDir(); 46 $parser->setCharset($charset); 47 $result = $parser->parse($data, $options); 48 49 return $result; 50 } 51 52 /** 53 * Parses a jCard or jCal object, and returns the top component. 54 * 55 * The options argument is a bitfield. Pass any of the OPTIONS constant to 56 * alter the parsers' behaviour. 57 * 58 * You can either a string, a readable stream, or an array for its input. 59 * Specifying the array is useful if json_decode was already called on the 60 * input. 61 * 62 * @param string|resource|array $data 63 * @param int $options 64 * 65 * @return Document 66 */ 67 public static function readJson($data, $options = 0) 68 { 69 $parser = new Parser\Json(); 70 $result = $parser->parse($data, $options); 71 72 return $result; 73 } 74 75 /** 76 * Parses a xCard or xCal object, and returns the top component. 77 * 78 * The options argument is a bitfield. Pass any of the OPTIONS constant to 79 * alter the parsers' behaviour. 80 * 81 * You can either supply a string, or a readable stream for input. 82 * 83 * @param string|resource $data 84 * @param int $options 85 * 86 * @return Document 87 */ 88 public static function readXML($data, $options = 0) 89 { 90 $parser = new Parser\XML(); 91 $result = $parser->parse($data, $options); 92 93 return $result; 94 } 95} 96