Что я хочу
Если URL-адрес в строке содержит .jpg
в конце URL-адреса (а не строки), то он должен сделать изображение из него с preg_replace
else, чтобы сделать обычную ссылку.
так например:
Если у меня есть 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));
Попробуй это
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; }
$content = preg_replace('#\b(http://\S+\.jpg)\b#i', '<img src="$1" alt="$1" />', $content);
Вам не нужно смотреть. Просто пойдите с
$content = preg_replace("#(http://[^ ]+\\.jpg(?= |$)#i","<img src=\"$1\" alt=\"$1\"/>", $content);
Я думаю, вы использовали оператора lookahead, когда вы хотели искать. Вы можете изменить (?=\.jpg)
на (?<=\.jpg)
но есть и другие, более чистое регулярное выражение, я уверен, что другие будут публиковать сообщения.
Это сработало для меня.
$parse_img='Hello, http://img.ruphp.com/php/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