首頁  >  文章  >  後端開發  >  php取得不到圖片src

php取得不到圖片src

WBOY
WBOY原創
2023-05-07 10:28:11724瀏覽

隨著網路科技的不斷發展,網頁中不但以文字為主要內容,也逐漸走向圖片、音訊、影片等多媒體元素的融合。如今,我們造訪網頁時,更多地藉助了這些多媒體元素,它們豐富了我們的美感體驗,也讓頁面更加生動、直觀。

其中,圖片是最常見的多媒體元素之一。在網頁開發中,使用圖片可以充實頁面內容,豐富使用者體驗。有時候,我們需要在伺服器端取得圖片的src位址,以進行相關操作。在php中,取得圖片的src位址有許多方法,但可能會遇到一些問題,導致取得失敗。本文將詳細介紹php取得不到圖片src的原因與解決方案。

一、取得圖片src的方法

在php中,取得圖片的src位址有許多方法,這裡介紹兩種比較常見的方法。

  1. 使用正規表示式取得圖片src

在html中,圖片位址的src通常寫在img標籤中的src屬性裡。因此,我們可以使用正規表示式來取得img標籤中的src屬性值。

function getImgSrc($html){
    $pattern = '/<img.*?src="(.*?)".*?>/is';
    preg_match_all($pattern, $html, $matches);
    $src_array = $matches[1];
    return $src_array;
}

上面的函數中,$html是一個html頁面的字串形式。使用正規表示式,匹配html中所有img標籤的src屬性值,並傳回一個陣列$src_array,其中儲存了所有圖片的src位址。

  1. 使用DOMDocument取得圖片src

DOMDocument是php中使用XML和HTML文件的主要工具之一。它提供了一系列方法,可以輕鬆地取得HTML文件中的元素及其屬性。我們可以利用DOMDocument來取得img標籤的src屬性值。

function getImgSrc($html){
    $dom = new DOMDocument();
    @$dom->loadHTML($html);
    $xpath = new DOMXPath($dom);
    $src_array = array();
    $img_list = $xpath->query('//img');
    foreach($img_list as $img){
        $src_array[] = $img->getAttribute('src');
    }
    return $src_array;
}

上面的函數中,$html同樣是一個html頁面的字串形式。使用DOMDocument,建立一個文件物件$dom,並使用loadHTML方法載入html頁面。接著,使用DOMXPath取得所有img標籤,再遍歷每一個img標籤,取得其src屬性值。

二、取得失敗的原因及解決方案

在使用上述方法取得圖片src時,可能會遇到取得失敗的情況。以下是幾種可能的原因及對應的解決方案。

  1. 傳入的html不完整

getImgSrc函數中傳入的$html參數應是一個完整的html文檔,但有時,我們只取得了部分頁面內容,或html文件中有一些不完整的標籤,則會導致取得失敗。此時,我們需要保證傳入的html文件完整無誤。

  1. 圖片src使用了相對路徑

有時候,圖片的src屬性使用的是相對路徑,因此,我們在伺服器端取得圖片時,需要將其轉化為絕對路徑。可以使用php的dirname函數和parse_url函數,將相對路徑轉換為絕對路徑。

function getAbsoluteUrl($base, $relative){
    $parse_base = parse_url($base);
    if(!isset($parse_base['path'])){
        $parse_base['path'] = '/';
    }
    $dir = dirname($parse_base['path']);
    if($relative[0] == '/'){
        $relative = substr($relative, 1);
    }
    if($relative[0] == '.'){
        $i = 0;
        while(substr($relative, 0, 2) == './'){
            $relative = substr($relative, 2);
        }
        $dir .= '/';
    }
    $result = $parse_base['scheme']."://".$parse_base['host'];
    if(isset($parse_base['port']) && $parse_base['port'] != '80'){
        $result .= ':'.$parse_base['port'];
    }
    $result .= $dir.$relative;
    return $result;
}

上面的函數中,$base為相對路徑的基準位址,$relative為相對路徑。使用dirname函數取得基準位址的目錄路徑$dir,然後根據相對路徑的情況,拼接出完整的絕對路徑。

  1. 網路原因

取得圖片src也會受到網路環境的影響。如果網路不穩定或中斷,都會導致獲取失敗。此時可以嘗試重新取得或等待網路穩定後再次嘗試取得。

綜上所述,本文介紹了php取得不到圖片src的原因及解決方案。在伺服器端取得圖片src是常見的開發需求,掌握獲取方法及遇到問題時的一些解決方法,可以更好的提高開發效率並減少問題帶來的影響。

以上是php取得不到圖片src的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn