2013-03-08 69 views
0

我需要從帖子中提取第一張圖片,但我發現這段代碼卻顯示了帖子中的最後一張圖片(例如:http://zonadictoz.com.ar),我不知道爲什麼!來自Wordpress的第一張圖片

function myPostImage() 
{ 
    global $post, $posts; 
    $first_img = ''; 
    ob_start(); 
    ob_end_clean(); 
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); 
    $first_img = $matches [1] [0]; 

    if(empty($first_img)){ //Defines a default image 
    $first_img = "/images/default.jpg"; 
    } 
    return $first_img; 
} 

任何想法?

+0

難道你不能只選擇從數據庫連接到帖子的第一張圖片? – 2013-03-08 07:08:47

+0

使用正則表達式來解析HTML通常被認爲是不好的。改用'DomDocument'。 – 2013-03-08 07:23:48

+0

如果你堅持使用正則表達式,'var_dump'你的匹配,看看你的第一個圖像是否在數組中。你可能只是在調用錯誤的索引。 – 2013-03-08 07:25:11

回答

2

使用features image領域是一個更強大的解決方案,但與問候你的代碼,你可以改變preg_match_all()的preg_match(),以確保只有第一場比賽被捕獲:

<?php 
$match = preg_match('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); 

if ($match) 
    $first_img = $matches[1]; 
?> 
+0

感謝您的幫助,您可以將您的代碼應用於我的功能嗎?,謝謝 – 2013-03-08 07:58:43

+0

我實現了適應您的代碼,但似乎仍然從最後一張圖片中提取,而不是第一張,我如何才能將其反轉? – 2013-03-08 08:08:16

+0

很可能最後一張圖片是您的正則表達式匹配**的唯一圖片標籤。這就是爲什麼你不應該使用正則表達式來解析HTML,這是不可靠的。 – kjetilh 2013-03-08 09:31:17

0

我實現了代碼修改,但它似乎仍然從最後一張圖片中提取,而不是第一張,我該如何反轉它?

相關問題