使用php在json上抓取图像URL

时间:2018-03-30 09:46:02

标签: php json replace preg-replace str-replace

我有这样的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”路径中,附加了一个图像网址

{
    "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?

3 个答案:

答案 0 :(得分:1)

这个正则表达式可以正常工作:

$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);

答案 1 :(得分:1)

试试这个

val_name.map(x => x._1 + x._2.mkString(",")).repartition(1).write.text("path to store")

<强>输出:

<?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>";

答案 2 :(得分:1)

not recommended to parse html with regex

您可以使用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

Demo