<?
$template = <<< EOF
Hello. Have you visited google.comm today?
Hello. Have you visited www.google.com today?
Hello. Have you visited http://google.com today?
Hello. Have you visited https://google.com today?
EOF ;
$template = preg_replace_callback ( '/(?=(([\w\/\/:.]+)\.(?:com|net|org|info|no|dk|se)))\b(?:(?:https?|ftp|file):\/\/|(?:www\.|ftp\.)?) (?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*
(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])/ix' , 'my_callback' , $template ) ;
function my_callback( $matches ) {
$link = $matches [ 1 ] ;
return "<a href=\" $link \" >$link </a>" ;
} else {
$link = $matches [ 1 ] ;
return "<a href=\" http://$link \" >http://$link </a>" ;
}
}
echo $template ;
PD8gCiR0ZW1wbGF0ZSA9IDw8PCBFT0YKSGVsbG8uIEhhdmUgeW91IHZpc2l0ZWQgZ29vZ2xlLmNvbW0gdG9kYXk/CkhlbGxvLiBIYXZlIHlvdSB2aXNpdGVkIHd3dy5nb29nbGUuY29tIHRvZGF5PwpIZWxsby4gSGF2ZSB5b3UgdmlzaXRlZCBodHRwOi8vZ29vZ2xlLmNvbSB0b2RheT8KSGVsbG8uIEhhdmUgeW91IHZpc2l0ZWQgaHR0cHM6Ly9nb29nbGUuY29tIHRvZGF5PwpFT0Y7CgokdGVtcGxhdGUgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJy8oPz0oKFtcd1wvXC86Ll0rKVwuKD86Y29tfG5ldHxvcmd8aW5mb3xub3xka3xzZSkpKVxiKD86KD86aHR0cHM/fGZ0cHxmaWxlKTpcL1wvfCg/Ond3d1wufGZ0cFwuKT8pCiAgICAgICg/OlwoWy1BLVowLTkrJkAjXC8lPX5ffCQ/ITosLl0qXCl8Wy1BLVowLTkrJkAjXC8lPX5ffCQ/ITosLl0pKgogICAgICAoPzpcKFstQS1aMC05KyZAI1wvJT1+X3wkPyE6LC5dKlwpfFtBLVowLTkrJkAjXC8lPX5ffCRdKS9peCcsJ215X2NhbGxiYWNrJywkdGVtcGxhdGUpOwogCmZ1bmN0aW9uIG15X2NhbGxiYWNrKCRtYXRjaGVzKSB7CiAKaWYgKHByZWdfbWF0Y2goJy9odHRwcz8vaXgnLCAkbWF0Y2hlc1sxXSkpIHsKICAgICRsaW5rID0gJG1hdGNoZXNbMV07CiAgICByZXR1cm4gIjxhIGhyZWY9XCIkbGlua1wiPiRsaW5rPC9hPiI7Cn0gZWxzZSB7CiAgICAkbGluayA9ICRtYXRjaGVzWzFdOwogICAgcmV0dXJuICI8YSBocmVmPVwiaHR0cDovLyRsaW5rXCI+aHR0cDovLyRsaW5rPC9hPiI7Cn0KfQoKZWNobyAkdGVtcGxhdGU7