Что я хочу
Если URL в строке содержит a .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 заменяется ссылкой всегда, и мой regex не работает :(.
Что я попробовал:
$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);
Я думаю, вы использовали оператор просмотра вперед, когда хотели посмотреть назад. Вы можете изменить (? = \. Jpg)
на (? <= \. Jpg)
, но есть и другие, более чистые регулярные выражения, я уверен, что другие опубликуют.
Вам не нужен поиск. Просто используйте
$content = preg_replace("#(http://[^ ]+\\.jpg(?= |$)#i","<img src=\"$1\" alt=\"$1\"/>", $content);