From 87bb8cd69cc593fe6bed330fb1791eac9df87167 Mon Sep 17 00:00:00 2001 From: donncha Date: Tue, 23 Oct 2007 18:28:40 +0000 Subject: Merge with WordPress, rev 6285 and untested git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@1125 7be80a69-a1ef-0310-a953-fb0f7c49ff36 --- wp-includes/feed.php | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'wp-includes/feed.php') diff --git a/wp-includes/feed.php b/wp-includes/feed.php index 8f9219c..6b431b1 100644 --- a/wp-includes/feed.php +++ b/wp-includes/feed.php @@ -250,4 +250,47 @@ function atom_enclosure() { } } +/** + * prep_atom_text_construct() - determine if given string of data is + * type text, html, or xhtml, per RFC 4287 section 3.1. + * + * In the case of WordPress, text is defined as containing no markup, + * xhtml is defined as "well formed", and html as tag soup (i.e., the rest). + * + * Container div tags are added to xhtml values, per section 3.1.1.3. + * + * @package WordPress + * @subpackage Feed + * @since 2.4 + * + * @param string $data input string + * @return array $result array(type, value) + * @link http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.3.1 + */ +function prep_atom_text_construct($data) { + if (strpos($data, '<') === false && strpos($data, '&') === false) { + return array('text', $data); + } + + $parser = xml_parser_create(); + xml_parse($parser, '
' . $data . '
', true); + $code = xml_get_error_code($parser); + xml_parser_free($parser); + + if (!$code) { + if (strpos($data, '<') === false) { + return array('text', $data); + } else { + $data = "
$data
"; + return array('xhtml', $data); + } + } + + if (strpos($data, ']]>') == false) { + return array('html', ""); + } else { + return array('html', htmlspecialchars($data)); + } +} + ?> -- cgit