我在preg_match_all函数中遇到这种模式 - “/([a-z-_0-9/\:.]*.(jpg| jpeg | png))/ i” - 有点麻烦。不可否认,我的正则表达式有点弱,所以我怀疑其中有问题。
这就是我现在所拥有的 -
preg_match_all("/([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png))/i", $raw, $matching)
页面上有一堆图像没有被拉入,我得到的是以下内容($匹配数组的[0] - 其余是不同格式的重复数据)
array(8) {
[0]=>
string(77) "http://media.topshop.com/wcsstore/TopShop/images/catalog/05K01FBLC_normal.jpg"
[1]=>
string(143) "/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color7/cms/pages/static/static-0000067510/images/tact-wk24-LFWshipping_UK-ROW-EU.jpg"
[2]=>
string(76) "http://media.topshop.com/wcsstore/TopShop/images/catalog/05K01FBLC_large.jpg"
[3]=>
string(77) "http://media.topshop.com/wcsstore/TopShop/images/catalog/05K01FBLC_normal.jpg"
[4]=>
string(40) "//assets.pinterest.com/images/PinExt.png"
[5]=>
string(41) "http://platform.tumblr.com/v1/share_4.png"
[6]=>
string(163) "http://media.topshop.com/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color7/cms/pages/static/static-0000067528/images/PDP-wk24-LFWshipping_ROW-EU.jpg"
[7]=>
string(119) "/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color7/cms/pages/static/static-0000008560/images/onthego.png"
}
如果有人能给我一些信息,说明为什么这不是拉入页面上的每个图像而只是这8张图片?
正则表达式中是否存在限制我得到的内容?
我没有收到这个jpg链接 - http://media.topshop.com/wcsstore/TopShop/images/catalog/05K01FBLC_3_large.jpg - 即使它在页面上
非常感谢任何帮助。
格雷格
答案 0 :(得分:0)
我使用了这个,当MElliott把你从你那里得到的评论放在页面上时,也从页面上得到了25张图片。
preg_match_all('/([-a-z0-9_\/:.]+\.(jpg|jpeg|png))/i', $raw, $matches);
print "<pre>"; print_r($matches[0]); print "</pre>";
我唯一提到的是你不需要转义字符类中的所有字符 - 只有正斜杠,因为它是你正在使用的分隔符。此外,您应在字符类后使用加号+
而不是星号*
,以确保图像名称中至少包含一个字符。