2015-11-05 107 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