Не думаю, что я бы использовал для этого регулярное выражение, поскольку вы действительно проверяете только то, что находится в начале строки. Итак:
$link = $_POST['link'];
if (stripos($link, 'http://') === 0)
{
$link = substr($link, 7);
}
elseif (stripos($link, 'https://') === 0)
{
$link = substr($link, 8);
}
if (stripos($link, 'www.') === 0)
{
$link = substr($link, 4);
}
должен позаботиться об этом.