Понимаю, что изврат, но как рак на безрыбье..
Рег честно стырен с просторов интернета, рекомендую в нем подкрутить обязательность протокола http:// и еще не начинать статей со ссылок - ucfirst честно сделает Вам Http://
function TCR_CL_replace_content($content)
{
$regex = "/(\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|])/i";
$content=preg_replace_callback( $regex , function($m){return str_replace('.',chr(0),$m[1]);} , $content);
$content=preg_replace_callback( '|(?:\.)(?:\s*)(\w{1})|Ui'
,function($matches){ return ". ".strtoupper($matches[1]);}
,ucfirst($content)
);
$content= str_replace(chr(0),'.',$content);
return $content;
}
Считаю необходимым дополнить один момент. Надо учитывать кодировку исходного текста. Для utf8 например, скрипт будет работать некорректно. Для работы с utf-8 необходимо будет добавить модификатор u в вашу регулярку, добавить mb_internal_encoding и заменить strtoupper на mb_strtoupper. Также следует вычислять символ для временной подстановки динамически, на основании факта что его нет в исходном контенте.