使用PHP preg_match_all提取具有特定模式的图像URL

时间:2017-11-21 17:39:21

标签: php regex preg-match-all

我正在尝试使用PHP preg_match_all列出字符串的所有图像URL。

图像模式如下:

1. //c1.site.com/5/2421/38306891313_ce7844189b_n.jpg
2. \/\/c2.site.com\/2421\/24574382628_9a2af39e82_h.jpg

我能够提取以下结果:

m/5/2421/38306891313_ce7844189b_n.jpg // 'm' seems to be the end of .com?

但是我不确定如何包含子域名,域名和.com:

preg_match_all('/([-a-z0-9_\/:.])\/([-a-z0-9_\/:.])\/([-a-z0-9_\/:.]+\.(jpg))/i', $data, $matches);
foreach($matches[0] as $image){
echo $image.'<br/>';
}

preg_match_all('/([-a-z0-9_\/:.])\\/([-a-z0-9_\/:.])\\/([-a-z0-9_\/:.]+\.(jpg))/i', $data, $matches);
foreach($matches[0] as $image){
echo $image.'<br/>';
}

1 个答案:

答案 0 :(得分:1)

您可以改为使用parse_url

<?php

$string = "//c1.site.com/5/2421/38306891313_ce7844189b_n.jpg";

print_r(parse_url($string));
?>

哪个收益

Array
(
    [host] => c1.site.com
    [path] => /5/2421/38306891313_ce7844189b_n.jpg
)