从URL创建Img标记

时间:2010-07-30 13:30:09

标签: php regex url image preg-replace

我想要什么


如果字符串中的网址在末尾(不是字符串)中包含.jpg,那么它应该使用preg_replace来制作其中的图片。正常的链接。

所以例如:

如果我有http://www.example.com/images/photo.jpg,那么它应该替换为:

<img src="http://www.example.com/images/photo.jpg" alt="http://www.example.com/images/photo.jpg">

问题:


网址会以任何方式替换为链接,而我的正则表达式无效:(。

我尝试了什么:


        $content = preg_replace("/(http:\/\/[^\s]+(?=\.jpg))/i","<img src=\"$1\" alt = \"$1\"></img>",$content);    

        $content = nl2br(preg_replace("/(http:\/\/[^\s]+(?!\.jpg))/m", "<a href=\"$1\" rel=\"nofollow\" target=\"blank\" title=\"$1\" class=\"news-link\">$1</a>", $content));

5 个答案:

答案 0 :(得分:2)

试试这个

function replace_links($content)
{
    if (preg_match('#(http://[^\s]+(?=\.(jpe?g|png|gif)))#i', $content))
    {
        $content = preg_replace('#(http://[^\s]+(?=\.(jpe?g|png|gif)))(\.(jpe?g|png|gif))#i', '<img src="$1.$2" alt="$1.$2" />', $content);
    }
    else
    {
        $content = preg_replace('#(http://[^\s]+(?!\.(jpe?g|png|gif)))#i', '<a href="$1" rel="nofollow" target="blank" title="$1" class="news-link">$1</a>', $content);
    }

    return $content;
}

答案 1 :(得分:0)

$content = preg_replace('#\b(http://\S+\.jpg)\b#i', '<img src="$1" alt="$1" />', $content);

答案 2 :(得分:0)

您不需要环顾四周。跟你一起去

$content = preg_replace("#(http://[^ ]+\\.jpg(?= |$)#i","<img src=\"$1\" alt=\"$1\"/>", $content);    

答案 3 :(得分:0)

我认为当你想要lookbehind时你使用了前瞻操作符。您可以将(?=\.jpg)更改为(?<=\.jpg),但还有其他更清晰的正则表达式,我相信其他人会发布。

答案 4 :(得分:0)

这对我有用。

$parse_img='Hello, http://orbitco-ccna-pastquestions.com/images/Q5.jpg

在上图中,路由器R1有两个点对点。 “;

$parse_img=preg_replace('/(https?:\/\/(.\*)?\\.jpg|png|gif)[\s+]*/i',"< img src=\"$1\" alt = \"$1\">< /img >",$parse_img);

echo $parse_img;

Suyash