* @link http://elgg.org/
 */
/**
 * Takes a string and turns any URLs into formatted links
 *
 * @param string $text The input string
 * @return string The output stirng with formatted links
 **/
function parse_urls($text) {
	// @todo this causes problems with 
\s*
|', "\n\n", $pee);
	// Space things out a little
	$allblocks = '(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr)';
	$pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
	$pee = preg_replace('!(' . $allblocks . '>)!', "$1\n\n", $pee);
	$pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
	if ( strpos($pee, '
\s*(?' . $allblocks . '[^>]*>)!', "$1", $pee); $pee = preg_replace('!(?' . $allblocks . '[^>]*>)\s*
!', "$1", $pee); if ($br) { $pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', create_function('$matches', 'return str_replace("\n", ".  Only there because of the comment.
//		$pee = preg_replace_callback('!()(.*?) !is', 'clean_pre', $pee );
//	}
	$pee = preg_replace( "|\n$|", '', $pee );
	return $pee;
}
/**
 * Returns an excerpt.
 * Will return up to n chars stopping at the nearest space.
 * If no spaces are found (like in Japanese) will crop off at the
 * n char mark. Adds ... if any text was chopped.
 *
 * @param string $text
 * @param int $num_chars Return a string up to $num_chars long
 * @return string
 * @since 1.7.2
 */
function elgg_make_excerpt($text, $num_chars = 250) {
	$text = trim(strip_tags($text));
	$string_length = elgg_strlen($text);
	
	if ($string_length <= $num_chars) {
		return $text;
	}
	// handle cases
	$excerpt = elgg_substr($text, 0, $num_chars);
	$space = elgg_strrpos($excerpt, ' ', 0);
	// don't crop if can't find a space.
	if ($space === FALSE) {
		$space = $num_chars;
	}
	$excerpt = trim(elgg_substr($excerpt, 0, $space));
	if ($string_length != elgg_strlen($excerpt)) {
		$excerpt .= '…';
	}
	return $excerpt;
}
/**
 * Handles formatting of ampersands in urls
 *
 * @param string $url
 * @return string
 * @since 1.7.1
 */
function elgg_format_url($url) {
	return preg_replace('/&(?!amp;)/', '&', $url);
}
/**
 * When given a title, returns a version suitable for inclusion in a URL
 *
 * @param string $title The title
 * @return string The optimised title
 */
function friendly_title($title) {
	return elgg_view('output/friendlytitle', array('title' => $title));
}
/**
 * Displays a UNIX timestamp in a friendly way (eg "less than a minute ago")
 *
 * @param int $time A UNIX epoch timestamp
 * @return string The friendly time
 */
function friendly_time($time) {
	return elgg_view('output/friendlytime', array('time' => $time));
}