检索&使用preg_match显示帖子中的图像

时间:2016-02-28 01:39:40

标签: php regex preg-match

基本上这段代码抓住了帖子的第一张图片并将其显示在另一页面上。 如果没有图像,则会显示默认图像。

如何修改它以使其最多显示4张图像?

<?php

$Imagesrc = C('Plugin.IndexPostImage.Image','/images/default.png');

preg_match(
    '#\<img.+?src="([^"]*).+?\>#s', 
    $Sender->EventArguments['Post']->Body, 
    $images
);

if ($images[1]) {
    $Imagesrc = $images[1];
}

$thumbs ='<a class="IndexImg" href="'. 
    $Sender->EventArguments['Post']->Url .'">'. 
    Img($Imagesrc, array('title'=>$sline,'class'=>"IndexImg")).'</a>';

echo "$thumbs";

2 个答案:

答案 0 :(得分:0)

根据preg_match手册

,您在阵列Orange中找到的图像
  

$images

     

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )将包含与首次捕获匹配的文本   带括号的子模式,依此类推。

因此,您应该将$matches[1]数组从1重复到5,如果$images不为空,请将此图像添加到您的大拇指中。尝试这样的事情:

$images[$i]

答案 1 :(得分:0)

您可能希望改为使用preg_match_all

$string = 'blah blah <img src="img1.png">blah blah <img src="img2.png">blah blah <img src="img3.png">';
preg_match_all(
    '#<img.+?src="([^"]*)#s',
    $string,
    $images
);
print_r($images);

<强>输出:

Array
(
    [0] => Array
        (
            [0] => <img src="img1.png
            [1] => <img src="img2.png
            [2] => <img src="img3.png
        )

    [1] => Array
        (
            [0] => img1.png
            [1] => img2.png
            [2] => img3.png
        )

)