Ovo su Smarty modifikatori koje koristimo, ali mislim da ćeš se snaći da ih preradiš u ono što tebi treba. Koristi clickable funkciju.
PHP kôd:
/**
* Make links in a text clickable
*
* @param string $text
* @return string
*/
function smarty_modifier_clickable($text) {
$text = ' '.$text;
$text = preg_replace('#([\s\(\)])(https?|ftp|news){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^"\s\(\)<\[]*)?)#ie', '\'$1\'.smarty_modifier_linkify(\'$2://$3\')', $text);
$text = preg_replace('#([\s\(\)])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^"\s\(\)<\[]*)?)#ie', '\'$1\'.smarty_modifier_linkify(\'$2.$3\', \'$2.$3\')', $text);
return substr($text, 1);
} // smarty_modifier_clickable
/**
* Convert a $value to a valid link while making sure that it does not get too long
*
* @param string $value
* @param string $text
* @param string $rel
* @return string
*/
function smarty_modifier_linkify($value, $text = null, $rel = 'nofollow') {
$full_url = str_replace(array(' ', '\'', '`', '"'), array('%20', '', '', ''), $value);
if(strpos($value, 'www.') === 0) { // If it starts with www, we add http://
$full_url = 'http://'.$full_url;
} elseif (strpos($value, 'ftp.') === 0) { // Else if it starts with ftp, we add ftp://
$full_url = 'ftp://'.$full_url;
} elseif (!preg_match('#^([a-z0-9]{3,6})://#', $value, $bah)) { // Else if it doesn't start with abcdef://, we add http://
$full_url = 'http://'.$full_url;
} // if
// Ok, not very pretty :-)
$text = ($text == '' || $text == $value) ? ((strlen($value) > 55) ? substr($value, 0 , 39).' … '.substr($value, -10) : $value) : stripslashes($text);
if($rel) {
$rel = " rel=\"$rel\"";
} // if
return "<a href=\"$full_url\"$rel>$text</a>";
} // smarty_modifier_linkify