Создать тег Img из URL - PullRequest
       20

Создать тег Img из URL

1 голос
/ 30 июля 2010

Что я хочу


Если URL в строке содержит .jpg в конце URL (не в строке), тоон должен сделать из него изображение с помощью 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">

Проблема:


URL-адрес заменяется ссылкой в ​​любом случае, и мое регулярное выражение не работает :(.

Что я пробовал:


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

2 голосов
/ 30 июля 2010

Попробуйте это

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;
}
0 голосов
/ 21 сентября 2014

Это сработало для меня.

$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

0 голосов
/ 30 июля 2010

Тебе не нужен обходной путь.Просто иди с

$content = preg_replace("#(http://[^ ]+\\.jpg(?= |$)#i","<img src=\"$1\" alt=\"$1\"/>", $content);    
0 голосов
/ 30 июля 2010

Я думаю, что вы использовали оператор lookahead, когда хотели посмотреть назад. Вы можете изменить (?=\.jpg) на (?<=\.jpg), но есть другие, более чистые регулярные выражения, я уверен, что другие опубликуют.

0 голосов
/ 30 июля 2010
$content = preg_replace('#\b(http://\S+\.jpg)\b#i', '<img src="$1" alt="$1" />', $content);
...