【问题标题】:Create Img tag from URL从 URL 创建 Img 标记
【发布时间】:2010-07-30 13:30:08
【问题描述】:

我想要什么


如果字符串中的 URL 在 URL 的末尾 包含 .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));

【问题讨论】:

    标签: php regex url image preg-replace


    【解决方案1】:

    试试这个

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

    【讨论】:

    • 嘿!感谢您的回答 :),我尝试了与 IF/THEN 类似的解决方案,但您的更好;),它可以工作,但有 2 个问题,1. 这样我就没有任何链接在content中不是以jpgpnggif结尾,2.是照片后面有.jpg加号所以以&lt;img src="http://example.com/image.jpg" alt="http://example.com/image.jpg"&gt;.jpg结尾,我没有需要它,我不知道如何摆脱它们,因为我看到你在源代码中放了 2 美元,我已经删除了它们,然后消失了,但图像没有显示 o.O
    【解决方案2】:
    $content = preg_replace('#\b(http://\S+\.jpg)\b#i', '<img src="$1" alt="$1" />', $content);
    

    【讨论】:

    • \b 匹配句点之前/之后和其他符号:因此它将匹配 http://something.com/image.jpg.html 等。你不需要转义那些反斜杠吗?
    • 与 Amargohosh 的版本有同样的问题。
    【解决方案3】:

    您不需要环顾四周。就去吧

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

    【讨论】:

    • 如果图片替换在链接替换之前那么显示很糟糕,如果在链接替换之后它只是一个链接,我该怎么办?
    • 如果图像替换在链接替换之前,我会得到这样的结果:http://192.168.2.104/images/users/image.jpg" alt = "" rel="nofollow" target="blank" title="http://192.168.2.104/images/users/image.jpg"&gt;" class="news-link"&gt;http://192.168.2.104/images/users/image.jpg"&gt;
    【解决方案4】:

    我认为当你想要向后看时,你使用了前瞻运算符。您可以将(?=\.jpg) 更改为(?&lt;=\.jpg),但我相信其他人会发布其他更简洁的正则表达式。

    【讨论】:

      【解决方案5】:

      这对我有用。

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

      苏亚什

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-30
        • 1970-01-01
        • 1970-01-01
        • 2017-12-21
        • 2018-10-14
        • 1970-01-01
        • 2011-02-26
        • 2015-03-17
        相关资源
        最近更新 更多