У меня есть такие ответы 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-адрес изображения?
ОК! я попробую, спасибо Рик и kdoteu






Это регулярное выражение может работать:
$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
Вы пробовали использовать регулярное выражение, начиная с http и заканчивая .jpg`?