php正则提取地址补全地址,小议php正则提取图片地址

本文介绍下,用php的正则提取页面中图片地址的方法,有需要的朋友参考下。

在html页面中,图片网址规范的html代码一般为:

%E5%9B%A71

囧2和囧4是非必需的,若要通过XHTML认证https://www.gxlcms.com/囧1、囧3、囧5、囧6必不可少。

就正则谈正则的话,最短匹配为:

(?<=img.+?src=").*?(?=")

不过,这条在php中会报错:

Warning: preg_match_all() [function.preg-match-all]: Compilation failed: lookbehind assertion is not fixed length at offset *** in ***

问题在(?<=img.+?src=")这个零宽断言里,在php中,零宽断言里不支持类似“*”、“+”这些无限次的东西,于是报错了,把“.+?”改为定长就好。不过,要“img”和“src=”之间定长基本上是不可能的。通常,图片地址的img和src只会相隔一个很简单的空格,但不排除某些情况在src之前,img后有alt、titlte等东西。

所以

代码示例:

(?<=img.src=").*?(?=")

(?<=img\ssrc=").*?(?=")

单纯

(?<=src=").*?(?=")

不行吗?

通常情况,可以,但除了图片地址用src开头以外,javascript地址也用src开头!

把图片的后缀列出来,是否可以呢?例如:

代码示例:

(?<=src=").*?\.(jpg|jpeg|gif|png|bmp|JPG|JPEG|GIF|PNG|BMP)

你见过没有后缀的图片?jbxue.com 有很多这样的例子

RAW http://us.jbxue.com/content/media/images/Headers/15559182

SmackDown http://us.jbxue.com/content/media/images/Headers/15854138

NXT http://us.jbxue.com/content/media/images/Headers/15929136

Superstars http://us.jbxue.com/content/media/images/Headers/15815850

上面的网址都是图片,但都没有传统后缀,遇到这样的地址,还是会束手无策。

此时,可以这样:

PHPjiqiao-177278.html

有关php正则提取图片地址的建议:

如果图片地址的格式是img空格src=这种形式,请使用:(?<=img.src=").*?(?=") ,数组唯一。

否则,请使用

PHPjiqiao-177278.html

就介绍这些吧,写的有点乱,不过真的希望可以帮助大家理解php正则的用法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值