{$url}"; } public function cleanURL( $url ) { if( $url == '' ) { return $url; } $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url); $url = str_replace( array( "%0d", "%0a" ), '', $url ); $url = str_replace( ";//", "://", $url ); /* If the URL doesn't appear to contain a scheme, we * presume it needs http:// appended (unless a relative * link starting with / or a php file). */ if( strpos( $url, ":" ) === false && substr( $url, 0, 1 ) != "/" && substr( $url, 0, 1 ) != '#' && !preg_match( "|^[a-z0-9-]+?\.php|i", $url ) ) { $url = "http://{$url}"; } // Replace ampersans and single quotes $url = preg_replace( "|&([^#])(?![a-z]{2,8};)|", "&$1", $url ); $url = str_replace( "'", "'", $url ); return $url; } public function transform( $text ) { $text = " {$text}"; $text = preg_replace_callback( '#(?<=[\s>])(\()?([\w]+?://(?:[\w\\x80-\\xff\#$%&~/=?@\[\](+-]|[.,;:](?![\s<]|(\))?([\s]|$))|(?(1)\)(?![\s<]|$)|\)))+)#is', array( 'MakeItLink', '_link_www' ), $text ); $text = preg_replace( "#(]+?>|>))]+?>([^>]+?)#i", "$1$3", $text ); $text = trim( $text ); return $text; } } // class MakeItLink