2016-02-28 110 views
1

基本上這段代碼抓住帖子的第一張圖片並將其顯示在另一頁上。 如果沒有圖像,它會顯示默認圖像。使用preg_match檢索並顯示帖子中的圖像

如何修改它使其最多可顯示4個圖像?根據到preg_match手冊中陣列$images

<?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"; 
+0

誰能幫助請? – Dave

回答

0

你發現的圖像:

int preg_match (string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]])

$matches[1]將具有匹配的第一捕獲 括號中的子模式的文本,等等。

所以,你應該遍歷從1 $images陣列5,如果$images[$i]沒有清空該圖像添加到您的拇指。嘗試是這樣的:

<?php 

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

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

$thumbs = ""; 
for ($i = 1; $i <= 5; $i) { 
    if(!empty($images[$i])) { 
     $thumbs .= '<a class="IndexImg" href="' . 
      $Sender->EventArguments['Post']->Url . '">' . 
      Img($images[$i], array('title' => $sline, 'class' => "IndexImg")) . '</a>'; 
    } else { 
     break; 
    } 
} 

echo "$thumbs"; 
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 
     ) 

) 
相關問題