2014-08-29 56 views
0

我有一塊html,內含很多<img src="..."/>將所有圖像轉換爲可點擊的A標籤,內含img

現在我正在尋找一種方法,使這樣的:

<img src="lol.jpg"/>到:

<a href="lol.jpg" class="image_inside_text" target="_blank"> 
<img src="lol.jpg"/> 
</a> 

的想法是讓圖像在打開一個新頁面,以查看原圖,我如果我想稍後將其添加到彈出窗口中,請添加一個類。 我期待在PHP中這樣做,有人可以幫我嗎?

謝謝

+0

你有這些圖像的數據庫或只有一個HTML文件?如果你有一個HTML文件,你將不得不編寫一個程序來解析該文件,並用所需的輸出製作一個新文件 – QuinnFTW 2014-08-29 15:47:13

+2

先試一下,問問你是否遇到問題.... – MightyPork 2014-08-29 15:47:54

+0

看看jQuery。它可以輕鬆完成此操作,而無需加載新頁面。 – nwolybug 2014-08-29 15:49:22

回答

1

他要求的解決方案PHP(請參閱標籤)。

$string = <<<EOD 
<img src="lol.jpg"> 
<img src="lol.jpg"/> 
<img src="lol.jpg" alt="sufix"/> 
<img alt="prefix" src="lol.jpg"/> 
EOD; 

$pattern = '/<img[^>]+src="([a-z.]+)"[^>]*>/i'; 
$replacement = '<a href="${1}">${0}</a>'; 
echo preg_replace($pattern, $replacement, $string); 

在線版本http://ideone.com/pY2EWY

+0

小貼士:您的示例不適用於具有完整網址而不僅僅是圖片的圖片。如果您使用例如http://www.google.com/lol.jpg,則無法使用。 – xtrimsky 2014-09-09 14:44:59

+0

@xtrimsky儘管您的嘗試編輯有意義,但通常最好不要執行實際更改答案的編輯。您的評論是建議實際更改的最佳方式。 – admdrew 2014-09-09 15:04:42

0

那麼,就使用一些jQuery的,試試這個:

<script> 
     $(function(){ 
       $('.thisimg').replace('<a href="your location" class="your class" target="_blank"><img src="your src" class="thisimg" /></a>'); 
     }); 
</script> 

<img src="your src" class="thisimg" /> 
0

有這樣做的幾種方法......大多數涉及的Javascript。

看看jQuery的方法wrap(),它包裝任何選定元素到另一個元素:

$("img").each(function() { 
    var href = $(this).attr("href"); 
    $(this).wrap("<a href='"+href+"' class='image_inside_text' target='_blank'></a>"); 
}); 

http://api.jquery.com/wrap/

0

您可以使用jQuery:

$(function(){ 
    $('img').each(function() { 
     var src = $(this).attr("src"); 
     $(this).replaceWith('<a href="' + src +'" class="image_inside_text" target="_blank"><img src="' + src + '"/></a>') 
    }); 
}); 
0

您可以使用輸出緩衝:ob_start做類似這樣的例子的東西和更換什麼test30建議回調:

<?php 

function callback($buffer) 
{ 
    // replace all the apples with oranges 
    return (str_replace("apples", "oranges", $buffer)); 
} 

ob_start("callback"); 

?> 
<html> 
<body> 
<p>It's like comparing apples to oranges.</p> 
</body> 
</html> 
<?php 

ob_end_flush(); 

?>