php 正则第一个,php – 使用正则表达式从html代码提取第一个图像源?

虽然正则表达式可以适用于各种各样的任务,但我发现解析HTML DOM时通常会很短。 HTML的问题是,您的文档的结构是如此变量,很难准确(并且准确地说,我的意思是100%的成功率,没有假阳性)提取标签。

我建议你做的是使用DOM解析器,如SimpleHTML,并使用它:

function get_first_image($html) {

require_once('SimpleHTML.class.php')

$post_html = str_get_html($html);

$first_img = $post_html->find('img', 0);

if($first_img !== null) {

return $first_img->src;

}

return null;

}

有些人可能认为这是过度的,但最终会更容易维护,并且还可以实现更多的扩展性。例如,使用DOM解析器,我也可以获取alt属性。

可以设计正则表达式以实现相同的目标,但是将受到限制,使得它将强制alt属性在src之后或相反的​​情况下,并且克服该限制将给正则表达式增加更多的复杂性。

另外,请考虑以下内容。要正确匹配< img>标记使用正则表达式并仅获取src属性(在组2中捕获),您需要以下正则表达式:

]*?\s*src\s*=\s*(["'])((\\?+.)*?)\1[^>]*?>

然后,如果:

>属性或标签名称在资本中,而i修饰符不被使用。

> src属性周围没有使用行情。

>另一个属性然后src使用>人物的价值在某处。

还有一些其他原因我没有预见到。

所以再一次,根本不用正则表达式来解析dom文件。

编辑:如果你想要所有的图像:

function get_images($html){

require_once('SimpleHTML.class.php')

$post_dom = str_get_dom($html);

$img_tags = $post_dom->find('img');

$images = array();

foreach($img_tags as $image) {

$images[] = $image->src;

}

return $images;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值