Работает:
$str = "http://element-bmw.ru/wp-content/uploads/2017/01/323e33885d8518e1eddecde0a54a18b7-702x336.jpg <br> http://element-bmw.ru/wp-content/uploads/2017/01/auto_parts_volkswagen_golf_3-768x450.jpg";
$str2 = preg_replace('/http:\/\/(.*?)\.(jpg|jpeg|png|gif|bmp)/i','//site.ru/misc/img.php?url=http://$1.$2',$str);
echo '<pre>'.print_r([$str,$str2],TRUE).'</pre>';
Не работает:
$str = "http://rambler.ru <br> http://element-bmw.ru/wp-content/uploads/2017/01/323e33885d8518e1eddecde0a54a18b7-702x336.jpg <br> http://element-bmw.ru/wp-content/uploads/2017/01/auto_parts_volkswagen_golf_3-768x450.jpg";
$str2 = preg_replace('/http:\/\/(.*?)\.(jpg|jpeg|png|gif|bmp)/i','//site.ru/misc/img.php?url=http://$1.$2',$str);
echo '<pre>'.print_r([$str,$str2],TRUE).'</pre>';
С регулярками на вы, рассчитываю на вашу помощь.
Очевидно, выражение /http:\/\/(.*?)\.(jpg|jpeg|png|gif|bmp)/i
будет соответствовать строке начиная от первого вхождения http
и до первого попавшегося (jpg|jpeg|....)
. Вызвано это тем, что используется маска (.*?)
, что соответствует любому символу.
В вашем же случае (в приведенном), поскольку ссылки, видимо разделены пробелами, то надо их исключить, из всех символов, то есть использовать, например (\S*?)
либо, если в разделителе будет тэг, то можно угловую скобку тоже исключить ([^\s<]*?)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите, можно ли как-то осуществить умный поиск в строке?
передаю в функцию параметр и хочу использовать его в регулярном выражении, но этот код не работает и не выдает ошибокEсли вместо ':code%' пишу...