diff --git wp-includes/post-formats.php wp-includes/post-formats.php
index 828447b..17689f3 100644
--- wp-includes/post-formats.php
+++ wp-includes/post-formats.php
@@ -420,3 +420,120 @@ function post_formats_compat( $content, $id = 0 ) {
 
 	return $output;
 }
+
+/**
+ * Deliberately interpret passed content as a chat transcript that is optionally
+ * followed by commentary
+ *
+ * If the content does not contain username syntax, assume that it does not contain
+ * chat logs and return
+ *
+ * @since 3.6.0
+ *
+ * Example:
+ *
+ * One stanza of chat:
+ * Scott: Hey, let's chat!
+ * Helen: No.
+ *
+ * $stanzas = array(
+ *     array(
+ *         array(
+ *             'author' => 'Scott',
+ *             'messsage' => "Hey, let's chat!"
+ *         ),
+ *         array(
+ *             'author' => 'Helen',
+ *             'message' => 'No.'
+ *         )
+ *     )
+ * )
+ * @param string $content A string which might contain chat data.
+ * @param boolean $remove Whether to remove the found data from the passed content.
+ * @return array A chat log as structured data
+ */
+function get_content_chat( &$content, $remove = false ) {
+	if ( empty( $content ) || ! preg_match( '#^(.*?):#', $content ) )
+		return array();
+
+	$last_index = 0;
+	$stanzas = array();
+	$lines = explode( "\n", make_clickable( $content ) );
+
+	$author = '';
+	$data = array();
+	$stanza = array();
+
+	foreach ( $lines as $index => $line ) {
+		$line = trim( $line );
+
+		if ( empty( $line ) ) {
+			if ( ! empty( $author ) ) {
+				$stanza[] = array(
+					'author' => $author,
+					'message' => join( ' ', $data )
+				);
+			}
+
+			$stanzas[] = $stanza;
+			$last_index = $index;
+			$stanza = array();
+			$author = '';
+			$data = array();
+			if ( ! empty( $lines[$index + 1] ) && ! strstr( $lines[$index + 1], ':' ) )
+				break;
+		}
+
+		$where = strpos( $line, ': ' );
+		if ( $where && ! preg_match( '#\s#', substr( $line, 0, $where ) ) ) {
+			if ( ! empty( $author ) ) {
+				$stanza[] = array(
+					'author' => $author,
+					'message' => join( ' ', $data )
+				);
+				$data = array();
+			}
+
+			$chunks = explode( ': ', $line, 2 );
+			$author = array_shift( $chunks );
+			$data[] = array_shift( $chunks );
+		} else {
+			$data[] = trim( $line );
+		}
+	}
+
+	if ( ! empty( $author ) ) {
+		$stanza[] = array(
+			'author' => $author,
+			'message' => join( ' ', $data )
+		);
+	}
+
+	if ( ! empty( $stanza ) )
+		$stanzas[] = $stanza;
+
+	if ( $remove )
+		$content = trim( join( "\n", array_slice( $lines, $last_index ) ) );
+
+	return $stanzas;
+}
+
+/**
+ * Retrieve structured chat data from the current or passed post
+ *
+ * @since 3.6.0
+ *
+ * @param int $id Optional. Post ID
+ * @return array
+ */
+function get_the_chat( $id = 0 ) {
+	$post = empty( $id ) ? get_post() : get_post( $id );
+	if ( empty( $post ) )
+		return array();
+
+	$data = get_content_chat( $post->post_content );
+	if ( empty( $data ) )
+		return array();
+
+	return $data;
+}
\ No newline at end of file
