if( 0 !== strpos( $web, 'http://' ) )
{
$web = 'http://'.$web;
}
По сути, вам не нужно регулярное выражение. Что нужно сделать, это проверить, является ли 'http://' первой частью $web
. Если нет, он добавит 'http://' в начало строки. В противном случае это ничего не делает.
Другой способ сделать это - просто проверить, не ложно ли это ... if( false === strpos( $web, 'http://' ) )
Это должно выполняться, если функция не работает Однако я не думаю, что это лучший способ сделать это.