使用 php 获取字符串中的第一个图像

2022-08-30 14:33:53

我试图从我的每个帖子中获取第一张图片。如果我只有一个图像,下面的代码效果很好。但是,如果我有更多的图像,它会给我一个图像,但并不总是第一个。

我真的只想要第一张图片。很多时候,第二个图像是下一个按钮

$texthtml = 'Who is Sara Bareilles on Sing Off<br>
<img alt="Sara" title="Sara" src="475993565.jpg"/><br>
<img alt="Sara" title="Sara two" src="475993434343434.jpg"/><br>';

preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $texthtml, $matches);
$first_img = $matches [1] [0];

现在我可以把这个“$first_img”贴在简短描述的前面

<img alt="Sara" title="Sara" src="<?php echo $first_img;?>"/>

答案 1

如果您只需要第一个源标记,则应代替 ,这对您有用吗?preg_matchpreg_match_all

<?php
    $texthtml = 'Who is Sara Bareilles on Sing Off<br>
    <img alt="Sara" title="Sara" src="475993565.jpg"/><br>
    <img alt="Sara" title="Sara two" src="475993434343434.jpg"/><br>';
    preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $texthtml, $image);
    echo $image['src'];
?>

答案 2

不要使用正则表达式来解析 html。使用 html 解析 lib/class,如 phpquery:

require 'phpQuery-onefile.php';

$texthtml = 'Who is Sara Bareilles on Sing Off<br> 
<img alt="Sarahehe" title="Saraxd" src="475993565.jpg"/><br> 
<img alt="Sara" title="Sara two" src="475993434343434.jpg"/><br>'; 
$pq = phpQuery::newDocumentHTML($texthtml);
$img = $pq->find('img:first');
$src = $img->attr('src');
echo "<img alt='foo' title='baa' src='{$src}'>";

全文: http://code.google.com/p/phpquery/


推荐