Замена картинок | preg_replace PHP

113
28 августа 2019, 06:10

Не получается написать регулярное выражение, которое заменяло бы все пути с картинками. Код:

preg_replace(
    "/[http|\/](.+?)" . basename($content_image) . "/i",
    $img_origin,
    $result["content"]
);

В коде картинки могут начинаться как с http так и просто со слеша. А так же мне известно название картинки. Но в итоге ничего не заменяется.

Пример строки:

Lorem ipsum dolor <a href="http://site.com/">sit</a> amet. <a href="/uploads/test.jpg"><img src="/uploads/test.jpg" alt=""></a>
Answer 1

Если и этот пример у вас окажется не рабочим, значит вы явно не правильно сформулировали ваш вопрос:

$str = <<<STR
    Lorem ipsum dolor <a href="http://site.com/">sit</a> amet. <a href="/uploads/test.jpg"><img src="/uploads/test.jpg" alt=""></a>
STR;
$pcre = '~(?:href|src)="\K[^"]+\.(?:jpg|png|gif)~s';
$repl = 'Значение для замены';
$str = preg_replace($pcre, $repl, $str);
echo $str;

Результат:

Lorem ipsum dolor <a href="http://site.com/">sit</a> amet. <a href="Значение для замены"><img src="Значение для замены" alt=""></a>

При необходимости можно дописать остальные расширения графических файлов в конструкцию (?:jpg|png|gif)

Answer 2

Использую для проверки картинки-ссылки, в одной проверке, вот такую регулярку

$url = preg_match('/([^\s]+(?=.(jpg|jpeg|gif|png)).\2)/', $url);

Пример работы регулярки на JQ

$('.url').each(function(){ 
  let url = $(this).text(), 
      urlCheck = url.match(/([^\s]+(?=\.(jpg|jpeg|gif|png))\.\2)/g); 
   
  $(this).append('<b> - это'+(urlCheck == null ? ' НЕ ' : ' ')+'картинка</b>').find('b').css('color', urlCheck == null ? 'red' : 'green'); 
});
.url {display: block;} 
.url b {font-weight: normal;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
 
<span class="url">http://site.com/image.jpg</span> 
<span class="url">http://site.com/image.html</span> 
<span class="url">https://site.com/image.jpg</span> 
<span class="url">https://site.com/image.html</span> 
<span class="url">http://www.site.com/image.jpg</span> 
<span class="url">http://www.site.com/image.html</span> 
<span class="url">https://www.site.com/image.jpg</span> 
<span class="url">https://www.site.com/image.html</span> 
<span class="url">www.site.com/image.jpg</span> 
<span class="url">www.site.com/image.html</span> 
<span class="url">site.com/image.jpg</span> 
<span class="url">site.com/image.html</span> 
<span class="url">/image.jpg</span> 
<span class="url">/image.html</span>

Источник регулярки

READ ALSO
Ошибка Permission denied при верных атрибутах

Ошибка Permission denied при верных атрибутах

Есть php скрипт, которому для работы нужны токеныТокены хранятся в отдельной папке в ini файле

110
Вывести картинку через php [дубликат]

Вывести картинку через php [дубликат]

На данный вопрос уже ответили:

144
Как при записи в файл пропускать дублирующее значение?

Как при записи в файл пропускать дублирующее значение?

Подскажите как при записи в файл не допускать дублирующее значение есть файл

126
Laravel Event&amp;Listeners: как лучше использовать?

Laravel Event&Listeners: как лучше использовать?

Всем привет! Столкнулся с задачей: реализовать логирование ключевых действийПриложение на Laravel 5

130