使用PHP preg_match_all以特定模式提取图像URL
我试图用PHP preg_match_all列出字符串的所有图像URL 图像模式如下所示:使用PHP preg_match_all以特定模式提取图像URL,php,regex,preg-match-all,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? 但是,我不确定如何
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/>';
}
preg\u match\u all('/([-a-z0-9\/:.])\/([-a-z0-9\/:.])\/([-a-z0-9\/:.]+\.(jpg))/i',$data,$matches);
foreach($将[0]匹配为$image){
echo$image.“
”;
}
预匹配所有('/([-a-z0-9\/:。])\/([-a-z0-9\/:。])\/([-a-z0-9\/:。]+\.(jpg))/i',$data,$MATCHS);
foreach($将[0]匹配为$image){
echo$image.“
”;
}
您可以使用解析url
:
<?php
$string = "//c1.site.com/5/2421/38306891313_ce7844189b_n.jpg";
print_r(parse_url($string));
?>
更好地使用。您只在正则表达式的开头匹配一个字符:
preg\u match\u all('/([-a-z0-9\/:。])\/…
。您需要一个+
,如preg\u match\u all('/([-a-z0-9\/:。])\/…
。您的项目实际需要多强的验证?或者删掉前面的斜杠:始终尝试最小化模式中的捕获组。我想我希望看到您在问题中的预期结果。只有在我已经提取了所有可能的图像URL时,这才有效,但我需要首先找到它们。
Array
(
[host] => c1.site.com
[path] => /5/2421/38306891313_ce7844189b_n.jpg
)