无论我尝试多少都无关紧要,我无法解决这个问题。
我在我的网站上有一个评论部分,我有一些使用正则表达式的函数。
我的一个函数替换链接中的内容字符串中的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。我无法全力以赴。我尝试了一切......有什么帮助吗?
这里的目标是:
检查从字符串中提取的URL是否为普通链接,或者是否有图像分机。
preg_replace
。
我希望这个问题看起来不会搞砸。在这里真的需要任何帮助。
答案 0 :(得分:0)
您可以使用此正则表达式,使用不敏感的大小写:
\.(?:gif|jpe?g|tiff?|png)$
并且,如果再次匹配$url
,那么它就是您的一张图片。
希望它有所帮助。