Задать вопрос
@SvizzZzy

Как заменить все img теги в тексте на ссылки (src)?

Например есть строка:
$str='текст текст <img src="123.jpg"> текст <img src="123.jpg">';

Она должна превратиться в: текст текст 123.jpg текст 123.jpg

Попробовал сделать это с помощью такой функции:
function scrapeImage($text) {
$pattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';
str_replace($pattern, $text, $link);
$link = $link[1];
return $link;
};

Почти получилось, но эта функция удаляет весь текст, оставляя только ссылку из src, а мне нужно чтобы текст остался..
Нужно что то вроде функции strip_tags, только которая будет оставлять ссылки из src="" а не удалять их вместе с тегами.
  • Вопрос задан
  • 644 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
ProjectSoft
@ProjectSoft
Front-end && Back-end разработчик
spoiler
$text = 'текст текст <img src="123.jpg"> текст <img src="123.jpg" alt="alternative"> текст <img title="Title" src="123.jpg"> текст <img title="Title" src="123.jpg" alt="Alternative Text">';
function replaceImg($matches) 
{
	$text = $matches[1];
	$req = '|src=[\'"](.+)[\'"]|U';
	preg_match($req, $text, $match);
    return $match[1];
}
echo preg_replace_callback("|(<img.+>)|U", "replaceImg", $text);
?>

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ivanq
@Ivanq
Знаю php, js, html, css
function scrapeImage($text) {
$pattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';
return preg_replace($pattern, '\1', $text, $link);
};

Не путайте str_replace и preg_replace
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽