2013-06-04 77 views
1

我想要在頁面上獲取任何網址,主要是爲了修復不顯示的圖像,並將其從相對絕對值改爲if它是相對的。使用PHP,javascript或jQuery在圖像完整路徑中創建所有相對路徑URL

實施例:

<img src="/folder/folder/image.jpg" />

<img src="http://<?php echo get_option('domain'); ?>/folder/folder/image.jpg" />

由於我將插入的域部分是一個PHP片段,取其方法最適合被更希望的話。謝謝。

+2

的HMTL''標記可能是有用的,但先研究它:http:// stackoverflow。 com/questions/1889076/is-it-recommended-the-base-html-tag – showdev

+1

使用php。創建一個像DOC_URL一樣的包含絕對路徑的變量或常量,然後在整個應用程序中使用它。 –

回答

4

您可以獲取所有img元素,並將src更改爲document.url + img.src。在JavaScript中應該很簡單。我認爲這裏更大的問題是爲什麼你在相對URL中遇到問題?如果你想從一個不同的域動態加載圖片或類似的東西,那麼是的,這很好。

如果你需要在頁面加載時做到這一點,那麼你最好在構建url服務器端,無論你用什麼來呈現你的html。

有關如何在JS中執行此操作的更多信息和代碼示例。 Getting an absolute URL from a relative one. (IE6 issue)

+0

這是否會在javascript有時間更改圖像源之前爲死鏈接做一堆請求? –

+0

@dhsto如果您嘗試修復頁面加載時的無效鏈接,則不需要使用JavaScript來做到這一點。因爲瀏覽器必須在JavaScript可以編輯這些元素之前解析該頁面。但是,如果您試圖獲取通過JavaScript加載的圖像的完整URL或針對每個圖像加載的圖像,那麼我認爲JavaScript是一個非常好的方法。 – recneps

+0

這就是我的想法。所以Javascript不會是這個問題的一個很好的解決方案,因爲他/她正試圖修復已經死亡的圖像源。在這種情況下,如果使用JavaScript動態生成內容或者從一開始就使用javascript設置源代碼,那麼JavaScript就會很好用......否則瀏覽器會在每次加載頁面時產生一堆死的請求。 –

0

使用JQuery,您可以使用.attr()更改src字符串。沒有ID屬性,試圖捕獲正確的img標籤可能會變得困難。你將不得不檢查每個src字符串的「www」。在追加當前網站之前查看是否已經有網站參考。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/lib/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$("img").each(function(){ 
     if($(this).prop("src").toLowerCase().indexof("www.") != -1){ 
      $(this).attr('src', document.domain + $(this).prop("src")); 
     } 
)}; 
</script> 

我覺得最難的部分是確定的img標籤需要改變它。

1

使用jQuery:

$(function() { 
    $('img').each(function() { 
     if (this.src.indexOf('http://') === -1) this.src = "http://mysite.com" + this.src; 
    }); 
}); 
+0

幾乎是我發佈的同一個解決方案。我認爲,如果圖像源不使用http://而是https://,那麼我認爲這將是一個挑戰。可能有多種方法可能導致圖像源可能導致源數據的更改,從而破壞鏈接而不是修復它們。如果字符串以/開頭,也許更好的方法是測試。 – AxGryndr

0

使用正則表達式是:

$text = '<img src="abc" /> asiodn <img src="dev" />'; //e.g. 
$regex = '/<img src="([^https?:\/\/][^"]*)" \/>/'; 
$result = preg_replace($regex, '<img src="http://' . get_option('domain') . '$1" />', $text); 

這應該修復圖片src所有相對URL

http://codepad.viper-7.com/TsHGbE