仍在与正则表达式斗争:) 我有这个代码:
$link = '/\bhttp:\/\/.+\..+[\/\w]?\b/i';
$match = array();
if (preg_match($link, 'http://bit.ly/hghjK6 bla bla',&$match))
{
echo 'match'.'</br>';
print_r($match);
}
因为我试图只提取字符串中的URL我无法隔离它,插入$ match的值总是包含“bla bla”taht跟随我的字符串中的URL 只匹配URL所需的正则表达式是什么,后面没有其他内容? 感谢
答案 0 :(得分:1)
$r = '`(\s|\A)(http|https|ftp|ftps)://(.*?)(\s|\n|[,.?!](\s|\n)|$)`ism'; // regex to match a URL
$i = preg_match_all($r, $str, $m, PREG_SET_ORDER);
if($i){
foreach($m as $set){
// each $set in $m is a group of match
// complete URL is
echo $set[2].'://'.$set[3];
}
}
这匹配文本中的所有网址。