继承我的问题。我正在建立一个网站,您可以在其中分享链接/图片。现在是我想要做的事情。如果链接是指向站点的链接,则显示如下链接:
<a href="http://example.com" target="_blank">http://example.com</a>
但继承我的垮台,如果它是一张图片(jpg,gif,png等)我想在页面而不是链接上显示它。我该怎么做呢?
- 忘了添加:
$profile_post_post = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\" target=\"_blank\">\\0</a>", $profile_post_post);
这就是构成链接的代码。
答案 0 :(得分:0)
使用preg_replace_callback
,提供一个回调,根据其格式有条件地选择链接内容。即如果它以.jpg
结尾,则呈现img
标记。如果它以典型图像文件扩展名以外的任何内容结束,请打印其名称。
答案 1 :(得分:0)
假设您使用的是PHP,并且该网址存储在 $ url 中:
if (!preg_match("@^https?\:\/\/@", $url)
{
$url = "http://$url";
}
if (preg_match("@\.(gif|jpe?g|png)$@", $url))
{
echo '<img src="' . $url . '" />"';
}
else
{
echo '<a href="' . $url . '" target="_blank">' . $url . </a>;
}
这不是一个确切的方法,因为某些图片可能使用正确的MIME类型提供,而不带有gif,jpeg,jpg或png扩展名。
这是检查链接是否引用图片的更好方法,但它耗费时间和带宽。因此,最好将结果存储在数据库中,同时$ url是,以便以后重用:
if (!preg_match("@^https?\:\/\/@", $url)
{
$url = "http://$url";
}
$headers = get_headers($url, 1);
$mime_type = isset($headers["Content-Type"]) ? $headers["Content-Type"] : "";
if (preg_match("@\.(gif|jpe?g|png)$@", $url) || preg_match("@^image\/@", $mime_type))
{
$html = '<img src="' . $url . '" />"';
}
else
{
$html = '<a href="' . $url . '" target="_blank">' . $url . '</a>';
}