2013-09-26 50 views
0

我想張貼超鏈接圖像到HTML頁面上的嵌入圖像。所以,我正在設置一些正則表達式的語法,但有困難 ,我希望有人能夠提供幫助。例如:正則表達式和preg_replace - 如何格式化嵌入圖像

我想轉過身來,

http://www.example.com/images/some_directory/logo.png 

<img src='http://www.example.com/images/some_directory/logo.png'> 

所以,我希望能夠爲所有典型的圖像類型做到這一點。到目前爲止,我已經拼湊起來了,但無法弄清楚如何完成語法。

<?php 

$pic = 'http://www.example.com/images/some_directory/logo.png'; 

function post_image($pic) 
    { 
    return preg_replace('!((http(s)?://)[-a-z]+)!', '<img src="$1">', $pic); 
    } 
$pic = post_image($pic); 

echo $pic; 

回答

1

也許你可以嘗試這樣的正則表達式:

'!((?:https?://)?[-a-z_/.]+\.(?:png|jpg|bmp|gif))!i' 

我把pngjpgbmpgif的一些推廣;你可以添加更多,如果你想。

+0

嗨傑裏,這似乎並沒有工作。我不認爲正在處理文件類型。整個事情看起來像這樣,「return preg_replace('!((?:http(s)?://)?[-a-z_ /。] + \。(?:png | jpg | bmp | gif)) !i',「」,$ pic);「 – Kimomaru

+0

@Kimomaru我不太清楚你的意思。鏈接中可能還有一些其他字符,您可以添加到字符類中或使用簡單的'。*?'(或者'\ S +'),但對於您的示例,它可以工作:[link](http ://regex101.com/r/uB6fZ2)。 – Jerry

0

只要使用preg_match然後在你的url周圍建立<img src...字符串(如果它是正確的話)可能更容易 - 像這樣?

<?php 
$pic = 'https://example.com/i/like/aardvarks.gif'; 


function post_image($pic) 
{ 
    $pattern = '^(?:http|https).*(?:\.jpg|\.jpeg|\.png|\.gif)$'; 

    if (preg_match($pattern, $pic)) 
     return '<img src="{$pic}">'; 
    else 
     return $pic; 
} 

$pic = post_image($pic); 

echo $pic; 

你可能會想在i-modifier (same for javascript and php, so this guide will work fine)添加到正則表達式的結束爲好,忽略大小寫(因爲你可能會得到JPEG,JPEG,JPG,GIF等各種有趣的變化)。