如何使用PHP获取字符串中的第一个图像?

时间:2017-08-06 15:13:58

标签: php preg-match

我使用此代码:

<?php
    $texthtml = '<p>test</p><br><p><img src="1.jpeg" alt=""><br></p><p><img src="2.png" alt=""><br><img src="3.png" alt=""></p>';
    preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $texthtml, $image);
    echo $image['src'];
?>

但是,当我测试它时,我会从字符串中获取最后一个图像(3.png)

我想知道如何在字符串中获取第一张图片(1.jpeg)

2 个答案:

答案 0 :(得分:0)

尝试:

preg_match('/<img(?: [^<>]*?)?src=([\'"])(.*?)\1/', $texthtml, $image);
echo isset($image[1]) ? $image[1] : 'default.png';

答案 1 :(得分:0)

正则表达式不适合html标签 您可以在此处阅读:RegEx match open tags except XHTML self-contained tags

我建议使用DOM文档,如果它比您在此处显示的更复杂 如果它不比这复杂,我建议找到单词和&#34; trim&#34;它与substr。

$texthtml = '<p>test</p><br><p><img src="1.jpeg" alt=""><br></p><p><img src="2.png" alt=""><br><img src="3.png" alt=""></p>';
$search = 'img src="';
$pos = strpos($texthtml, $search)+ strlen($search); // find postition of img src" and add lenght of img src"
$lenght= strpos($texthtml, '"', $pos)-$pos; // find ending " and subtract $pos to find image lenght.

echo substr($texthtml, $pos, $lenght); // 1.jpeg

https://3v4l.org/48iiI