如何找到模式匹配并使用preg_match保存到数组

时间:2014-12-31 09:12:11

标签: php arrays preg-replace preg-match preg-match-all

我想在字符串中搜索url并将它们保存到数组中。
这似乎很容易,但我找不到这样做的方法。我认为它可能类似于使用preg_replace?

$myarray = preg_replace(
"/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",
 null, $input)

例如我的输入字符串是

$input = "    
    blah blah blah https://www.google.com 
    blah blah blah https://www.yahoo.com
    blah blah blah http://stackoverflow.com"

最后,结果应该是数组中匹配的三个链接的值。

$myarray[0] = "https://www.google.com"
$myarray[1] = "https://www.yahoo.com"
$myarray[2] = "https://stackoverflow.com"

我希望你理解我的愿望,如果你有什么不清楚的话,我很抱歉。

1 个答案:

答案 0 :(得分:2)

使用preg_match而不是preg_replace

preg_match(
"/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",
 $input, $matches);

print_r($matches[0]);

更新:

preg_match只会产生单一匹配。

要匹配所有匹配项,请使用preg_match_all