2015-11-05 103 views
0

無論我嘗試多少,我無法弄清楚這一點。 我在我的網站上有一個評論部分,我有一些使用正則表達式的函數。 其中的一個函數取代了鏈接中內容字符串中的URL,只要它可以,它工作得很好。但是我想檢查匹配是否是正常鏈接,或者如果是圖片(以.jpg,.gif等結尾),則應該使用<img>標籤替換表達式。 我有這麼的:PHP - 用鏈接或圖像替換文本中的URL

function url_parse($string) { 
    $string = preg_replace('/\b(?:(http(s?):\/\/)|(?=www\.))(\S+)/is', '<a href="http$2://$3" target="_blank">$1$3</a>', $string); 
    return $string; 
} 

這一個是更換鏈接的功能。那樣容易。但我的想法是檢查它是否是一個圖像,我在這裏做了很多混淆。我甚至不知道如何extact的聯繫,所以我這樣做:

function geturl($string) { 
    $regex = '/\b(?:(http(s?):\/\/)|(?=www\.))(\S+)/is'; 
    preg_match_all($regex, $string, $matches); 
    return ($matches[0]); 
} 

我還送了一個函數來檢查,如果它實際上是一個圖像

function isIMG($url){ 
    $ext = strrpos($url, "."); 
    if ($pos === false) { 
     return false; 
    } 
    $ext = strtolower(trim(substr($url, $pos))); 
    $exts = array(".gif", ".jpg", ".jpeg", ".png", ".tiff", ".tif"); 
    if (in_array($ext, $exts)) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

一個鏈接,但我讓自己進入LIMBO。我不能把它全部一起工作。我嘗試了一切......有什麼幫助?這裏

目標是:

  1. 檢查從字符串中提取的URL是一個正常的鏈接,或者如果它有一個形象分機。

  2. preg_replace在字符串中。 我希望這個問題似乎沒有搞砸。真的需要任何幫助。

+0

如何向URL提出請求並查看響應是什麼? 'if(@exif_imagetype('URL')){' – chris85

回答

0

你可以使用這個表達式,與不敏感的情況下:

\.(?:gif|jpe?g|tiff?|png)$ 

Regex live here.

而且,如果有匹配againt $url那麼它就是你的圖像之一。

希望它有幫助。

+0

使用你的答案,我糾正了我的功能,我能夠做我想做的事。但之後,我決定將所有圖像鏈接放入一個數組中,並立即在'$ content'的末尾以縮略圖形式顯示,它就像一個魅力一樣。謝謝 – NuM3

+0

很高興幫助:) – 2015-11-05 18:57:50