Это регулярное выражение прекрасно работает для меня, и я проверил все типы URL,
<?php
$string = "Thisregexfindurlhttp://www.rubular.com/r/bFHobduQ3n mixedwithstring";
preg_match_all('/(https?|ssh|ftp):\/\/[^\s"]+/', $string, $url);
$all_url = $url[0]; // Returns Array Of all Found URL's
$one_url = $url[0][0]; // Gives the First URL in Array of URL's
?>
Проверено с большим количеством URL можно найти здесь http://www.rubular.com/r/bFHobduQ3n