【问题标题】:PHP cURL string get everything before and after certain part of stringPHP cURL字符串获取字符串特定部分之前和之后的所有内容
【发布时间】:2018-08-08 02:57:34
【问题描述】:

我使用 cURL 从网页中抓取一些数据。 但是由于数据是基于数组的,但是大小会发生变化和变化。 然后我需要搜索部分字符串并希望在 直到下一个逗号。

{"id":2988001,"teatiseNr":"50000099027","mkood":74,

现在是字符串。 我只想拥有 {"id": 之后的所有内容 直到第一个逗号。 所以我的输出是 2988001

为什么我需要搜索条件是因为有时有更多变量并且会打乱顺序。 现在我使用简单的

$pieces = explode(",", $page);

然后删除其余的

str_replace('{"id":','',$pieces[0]);

必须有更优雅的方式来完成这项工作。

【问题讨论】:

  • 这整个字符串是你的回应吗?它看起来像 json,所以你应该使用json_decode($page, true) 给你一个关联数组。
  • 是的,但是我不知道当变量机会出现时该怎么办,然后我的 sql 查询就下地狱了。

标签: php string curl str-replace explode


【解决方案1】:

如果它是基于数组的,那么 alistaircol、matei 和 neil 是正确的,你应该使用类似的东西

$data = json_decode($page);
$id = $data->id

假设由于某种原因响应实际上不是 JSON,并且带有 id 的项目的顺序是可变的,那么这样的事情也可以工作

$no_braces = str_ireplace('{','',$page);
$no_quotes = str_ireplace('"','',$no_braces);
$items = explode(",",$no_quotes);
function getID($items){
    foreach($items as $item){
         $parts = explode($item, ':');
         $key = $parts[0];
         if($key === 'id'){
             return $parts[1];
         }
    }
    return null;
}

【讨论】:

    【解决方案2】:

    这是一个 json 字符串,所以你可以这样做:

    $data = json_decode($string);
    
    echo $data->id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      • 2022-11-10
      • 2019-04-22
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多