2012-05-06 75 views
0

我想在我的网站上实现以下功能。当用户发布内容时,他也可以包含一个链接,这是链接到图片。想象一下,一个用户的帖子是这样的:php - 在文本中找到图像链接并将其转换为链接

Hello look at this awesome picture. It is hilarious isn't it? 
http://www.google.com/image.jpg 

然后文本应该转换为:

Hello look at this awesome picture. It is hilarious isn't it? 
<a target="_blank" href="http://www.google.com/image.jpg"> 
    <img src="http://www.google.com/image.jpg" alt=""/> 
</a> 

所以我需要一些PHP脚本,通过文字搜索链接,如果它发现一个链接,检查它是否链接到图片。它还需要能够识别不以http开头的链接,以及以https开头的链接。

你会怎么做?

感谢很多:)

丹尼斯

回答

2

怎么样这两个环节合并:

best way to determine if a URL is an image in PHP

PHP Regular Expression Text URL to HTML Link

$url="http://google.com/image.jpg"; 

function isImage($url){ 
    $pos = strrpos($url, "."); 
    if ($pos === false) 
     return false; 
    $ext = strtolower(trim(substr($url, $pos))); 
    $imgExts = array(".gif", ".jpg", ".jpeg", ".png", ".tiff", ".tif"); // this is far from complete but that's always going to be the case... 
    if (in_array($ext, $imgExts)) 
     return true; 
return false; 
} 

$test=isImage($url); 
if($test){ 
    $pattern = '/((?:[\w\d]+\:\/\/)?(?:[\w\-\d]+\.)+[\w\-\d]+(?:\/[\w\-\d]+)*(?:\/|\.[\w\-\d]+)?(?:\?[\w\-\d]+\=[\w\-\d]+\&?)?(?:\#[\w\-\d]*)?)/'; 
    $replace = '<a href="$1">$1</a>'; 
    $msg = preg_replace($pattern , $replace , $msg); 
    return stripslashes(utf8_encode($msg)); 
} 
+1

谢谢!我会尝试一个:) – weltschmerz

+1

太棒了,很高兴帮助! –

相关问题