首先,完全正确的匹配是不可能的。其实可以这样做
<?php
$str="a http://wa hsssk ftp://sdff fsfsf http://bb";
preg_match_all("'(http://|ftp://|mms://|file:///)[^\s]+'is",$str,$m);
print_r($m[0]);
?>
<?php
$str="a http://wa hsssk ftp://sdff fsfsf http://bb";
preg_match_all("'(http://|ftp://|mms://|file:///)[^\s]+'is",$str,$m);
print_r($m[0]);
?>
s .也匹配换行符,本来它是匹配所有除换行符外的所有字符的
U 非贪婪模式,简单的讲,就是找到最近的一个