Просто возьмите URL-адрес изображения на json с помощью php

У меня есть такие ответы Json.

{
    "status": "active",
    "city": "depok",
    "name": "Alternatif Cibubur",
    "lat": -6.376057,
    "thumbnail_html": "\n\n\n\n\n\n<div class=\"cam-thumb\">\n  \n    \n      <a href=\"/cam/248/alternatif-cibubur/\">\n        <img src=\"https://media.lewatmana.com/cam/tbicibubur/248/snapshot20180330_163142M-thumb.jpg\" class=\"cam-thumb-img\">\n      </a>\n    \n  \n\n  <div class=\"cam-thumb-info\">\n    <p class=\"cam-name\"><a href=\"/cam/248/alternatif-cibubur/\">Alternatif Cibubur</a></p>\n  </div>\n</div>\n\n\n",
    "lon": 106.900786,
    "id": 248,
    "description": "Kamera berada di jalan Alternatif Cibubur, arah menjauhi kamera menuju Cibubur Junction / Tol Jakarta, sebaliknya menuju Kranggan / Cileungsi / Bogor."
  }

как вы можете видеть, в пути "thumbnail_html" есть прикрепленный URL изображения

{
    "status": "active",
    "city": "depok",
    "name": "Alternatif Cibubur",
    "lat": -6.376057,
    "thumbnail_html": "https://media.lewatmana.com/cam/tbicibubur/248/snapshot20180330_163142M-thumb.jpg",
    "lon": 106.900786,
    "id": 248,
    "description": "Kamera berada di jalan Alternatif Cibubur, arah menjauhi kamera menuju Cibubur Junction / Tol Jakarta, sebaliknya menuju Kranggan / Cileungsi / Bogor."
  }

Я действительно пробовал использовать операторы str_replace и preg_replace, но они слишком сложны и длинны, есть ли более простой способ получить URL-адрес изображения?

Вы пробовали использовать регулярное выражение, начиная с http и заканчивая .jpg`?

kdoteu 30.03.2018 11:48

ОК! я попробую, спасибо Рик и kdoteu

Joe Ronald 30.03.2018 11:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
33
3

Ответы 3

Это регулярное выражение может работать:

$subject = '\n\n\n\n\n\n<div class=\"cam-thumb\">\n  \n    \n      <a href=\"/cam/248/alternatif-cibubur/\">\n        <img src=\"https://media.lewatmana.com/cam/tbicibubur/248/snapshot20180330_163142M-thumb.jpg\" class=\"cam-thumb-img\">\n      </a>\n    \n  \n\n  <div class=\"cam-thumb-info\">\n    <p class=\"cam-name\"><a href=\"/cam/248/alternatif-cibubur/\">Alternatif Cibubur</a></p>\n  </div>\n</div>\n\n\n';
$matches = [];
preg_match('/(https?://.*\.(?:png|jpg))/i', $subject, $matches);

var_dump($matches);

Попробуй это

<?php
$string = '\n\n\n\n\n\n<div class = "cam-thumb">\n  \n    \n      <a href = "/cam/248/alternatif-cibubur/">\n        <img src = "https://media.lewatmana.com/cam/tbicibubur/248/snapshot20180330_163142M-thumb.jpg" class = "cam-thumb-img">\n      </a>\n    \n  \n\n  <div class = "cam-thumb-info">\n    <p class = "cam-name"><a href = "/cam/248/alternatif-cibubur/">Alternatif Cibubur</a></p>\n 
</div>\n</div>\n\n\n';

preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $string, $match);

echo "<pre>";
print_r($match[0]); 
echo "</pre>";

выход:

Array
(
    [0] => https://media.lewatmana.com/cam/tbicibubur/248/snapshot20180330_163142M-thumb.jpg
)

Это не рекомендуется анализировать html с помощью регулярного выражения.

Вы можете использовать DOMDocument:

$data = <<<'DATA'
{
    "status": "active",
    "city": "depok",
    "name": "Alternatif Cibubur",
    "lat": -6.376057,
    "thumbnail_html": "\n\n\n\n\n\n<div class=\"cam-thumb\">\n  \n    \n      <a href=\"/cam/248/alternatif-cibubur/\">\n        <img src=\"https://media.lewatmana.com/cam/tbicibubur/248/snapshot20180330_163142M-thumb.jpg\" class=\"cam-thumb-img\">\n      </a>\n    \n  \n\n  <div class=\"cam-thumb-info\">\n    <p class=\"cam-name\"><a href=\"/cam/248/alternatif-cibubur/\">Alternatif Cibubur</a></p>\n  </div>\n</div>\n\n\n",
    "lon": 106.900786,
    "id": 248,
    "description": "Kamera berada di jalan Alternatif Cibubur, arah menjauhi kamera menuju Cibubur Junction / Tol Jakarta, sebaliknya menuju Kranggan / Cileungsi / Bogor."
  }
DATA;

$obj = json_decode($data);
$dom = new DOMDocument();
$dom->loadHTML($obj->thumbnail_html);
$obj = $dom->getElementsByTagName('img');
echo $dom->getElementsByTagName('img')->item(0)->getAttribute("src");

Это даст вам:

https://media.lewatmana.com/cam/tbicibubur/248/snapshot20180330_163142M-thumb.jpg

Демо

Другие вопросы по теме