Zajmuje sie obecnie ticketem: http://redmine.boduch.net/issues/214

Chodzi o to, ze gdy umieszcze w poscie adres URL - http://4programmers.net to jest on w momencie parsowania wiadomosci - zamieniany na znacznik <a> - http://4programmers.net

Problem pojawia sie w momencie, gdy na koncu linka znajduje sie nawias zamykajacy: http://pl.wikipedia.org/wiki/Wymiar_(matematyka) Nie jest on uwzgledniany w URLu. Niby jest to dzialanie pozadane, gdyz czesto zdarza sie ze podajemy adres w nawiasie (Delphi) i nie chce, aby nawias zamykajacy byl traktowany jako czesc URL-a.

Jednak, w momencie, gdy w URLu znajduje sie nawias otwierajacy, to ten zamykajacy tez powinien byc uwzgledniany. Jak to ugryzc?

Kod odpowiadajacy za transformacje linkow wyglada tak:

/**
 * Przeksztalca odnisniki w tekscie w dzialajace tagi (x)HTML
 * @param string $text Tekst do transformacji
 * @param int $limit Limit dlugosci URLa (dluzsze URL'e beda "przyciete" [nie w atrybucie href!])
 * @return string
 */
public static function transformUrl($text, $limit = false)
{
	/*
	 * Wyrazenia regularne z projektu Kohana
	 */
	//linki z	protokolem [np.	http://cos.pl, ftp://cos.pl]
	$patterns[] = '~\b(?<!href="|">)(?:ht|f)tps?://\S+(?:/|\b)~ie';
	$replacements[] = "'<a href=\"$0\">' . self::limitUrl('$0', $limit) . '</a>'";

	//linki bez protokolu, z 'www' na poczatku
	$patterns[] = '~\b(?<!://|">)www(?:\.[a-z0-9][-a-z0-9]*+)+\.[a-z]{2,6}\b~ie';
	$replacements[] = "'<a href=\"http://$0\">' . self::limitUrl('$0', $limit) . '</a>'";

	return preg_replace($patterns,	$replacements, $text);
}