コード:
    $pattern = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
    $urls = array();
    preg_match($pattern, $comment, $urls);
    return $urls;
オンラインの正規表現テスターによると、この正規表現は正しく、機能するはずです。
以下を使用して $links 配列を出力しています。
$linkItems = $model->getLinksInComment($model->comments);
//die(print_r($linkItems));
echo '<ul>';
foreach($linkItems as $link) {
    echo '<li><a href="'.$link.'">'.$link.'</a></li>';
}
echo '</ul>';
出力は次のようになります。
- http://google.com
- http
$model->comments は次のようになります。
destined for surplus
RT#83015
RT#83617
http://google.com
https://google.com
non-link
生成されたリストはリンクのみを想定しており、空の行があってはなりません。正規表現が正しいように見えるので、私がしたことに何か問題がありますか。