我使用此代码:
<?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)
。
答案 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