代碼更多:使preg_split匹配比它應該
$pattern = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
$urls = array();
preg_match($pattern, $comment, $urls);
return $urls;
據一項網上正則表達式測試儀,這正則表達式是正確的,應該工作:
我輸出$鏈接陣列使用:
$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
的$模型 - >評論如下所示:
destined for surplus
RT#83015
RT#83617
http://google.com
https://google.com
non-link
產生的列表只假設是鏈接,並且不應該有空行。我所做的是否有問題,因爲正則表達式似乎是正確的。
你應該發佈'$ model-> comments' –
@MarkLakata謝謝,這可能會有所幫助。我已編輯它。 – ComputerLocus
正則表達式是Godforsaken暴行,我並不感到驚訝,你不能使它成爲正面或反面;出於可維護性和基本理智的原因,您會非常樂意找到*任何其他方法*將'$ comment'分解爲您需要的值。 –