PHP - 使用链接或图像替换文本中的URL

时间:2015-11-05 02:39:00

标签: php regex

无论我尝试多少都无关紧要,我无法解决这个问题。 我在我的网站上有一个评论部分,我有一些使用正则表达式的函数。 我的一个函数替换链接中的内容字符串中的URL,只要它可以,它工作得很好。但是我想检查匹配是否是正常链接,或者它是图像(以.jpg,.gif等结尾),如果是这样,那么它应该具有带有<img>标记的替换表达式。 我有这样的:

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; 
}

这是替换链接的功能。很简单。但我的想法是检查它是否是一个图像,我在这里做了很多混乱。我甚至不知道如何取消链接,所以我这样做:

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. 字符串中的
  3. preg_replace。 我希望这个问题看起来不会搞砸。在这里真的需要任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式,使用不敏感的大小写:

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

Regex live here.

并且,如果再次匹配$url,那么它就是您的一张图片。

希望它有所帮助。