コード:
$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
生成されたリストはリンクのみを想定しており、空の行があってはなりません。正規表現が正しいように見えるので、私がしたことに何か問題がありますか。