diff options
Diffstat (limited to 'engine/lib')
| -rw-r--r-- | engine/lib/database.php | 4 | ||||
| -rw-r--r-- | engine/lib/output.php | 25 | 
2 files changed, 17 insertions, 12 deletions
| diff --git a/engine/lib/database.php b/engine/lib/database.php index 3553d787d..37dfb8f8d 100644 --- a/engine/lib/database.php +++ b/engine/lib/database.php @@ -473,7 +473,7 @@ function insert_data($query) {  }  /** - * Update a row in the database. + * Update the database.   *   * @note Altering the DB invalidates all queries in {@link $DB_QUERY_CACHE}.   * @@ -498,7 +498,7 @@ function update_data($query) {  }  /** - * Remove a row from the database. + * Remove data from the database.   *   * @note Altering the DB invalidates all queries in {@link $DB_QUERY_CACHE}.   * diff --git a/engine/lib/output.php b/engine/lib/output.php index c5a04989b..6905b9b71 100644 --- a/engine/lib/output.php +++ b/engine/lib/output.php @@ -13,28 +13,33 @@   * @param string $text The input string   *   * @return string The output string with formatted links - **/ + */  function parse_urls($text) { + +	// URI specification: http://www.ietf.org/rfc/rfc3986.txt +	// This varies from the specification in the following ways: +	//  * Supports non-ascii characters +	//  * Does not allow parentheses and single quotes +	//  * Cuts off commas, exclamation points, and periods off as last character +  	// @todo this causes problems with <attr = "val">  	// must be in <attr="val"> format (no space).  	// By default htmlawed rewrites tags to this format.  	// if PHP supported conditional negative lookbehinds we could use this:  	// $r = preg_replace_callback('/(?<!=)(?<![ ])?(?<!["\'])((ht|f)tps?:\/\/[^\s\r\n\t<>"\'\!\(\),]+)/i', -	// -	// we can put , in the list of excluded char but need to keep . because of domain names. -	// it is removed in the callback. -	$r = preg_replace_callback('/(?<!=)(?<!["\'])((ht|f)tps?:\/\/[^\s\r\n\t<>"\'\!\(\),]+)/i', +	$r = preg_replace_callback('/(?<!=)(?<!["\'])((ht|f)tps?:\/\/[^\s\r\n\t<>"\'\(\)]+)/i',  	create_function(  		'$matches',  		'  			$url = $matches[1]; -			$period = \'\'; -			if (substr($url, -1, 1) == \'.\') { -				$period = \'.\'; -				$url = trim($url, \'.\'); +			$punc = \'\'; +			$last = substr($url, -1, 1); +			if (in_array($last, array(".", "!", ","))) { +				$punc = $last; +				$url = rtrim($url, ".!,");  			}  			$urltext = str_replace("/", "/<wbr />", $url); -			return "<a href=\"$url\">$urltext</a>$period"; +			return "<a href=\"$url\" rel=\"nofollow\">$urltext</a>$punc";  		'  	), $text); | 
