В основном из-за того, что регулярное выражение недопустимо - в середине есть / /.
Либо измените разделитель на что-то другое, например, чтобы остановить // посередине столкновения:
$latestTweet = preg_replace('~http://([a-z0-9_]+)~i', '<a href="http://$1" target="_blank">http://$1</a>', $latestTweet); echo $latestTweet;
Обратите внимание, что вам явно не нужно использовать ~, но он гораздо реже используется в регулярных выражениях (по крайней мере, по моему опыту), чем / в итоге получается.
В качестве альтернативы вы можете экранировать // часть:
$latestTweet = preg_replace('/http:\/\/([a-z0-9_]+)/i', '<a href="http://$1" target="_blank">http://$1</a>', $latestTweet); echo $latestTweet;