首页  >  问答  >  正文

使用strpos() PHP函数进行信息检索和裁剪时遇到的问题

我从一个API中获得了原始数据,其中包含一个JSON,我试图从返回的数据中裁剪出只有JSON的部分。我使用了php的strpos()函数编写了一个函数来裁剪JSON,从开始(左大括号的位置)到结束(右大括号的位置)。

但是我遇到了一个问题,数据的某些值也包含特殊字符,包括分号,这使得函数无法完全裁剪...

请问有没有更好的方法来解决这个问题?

一些数据的示例:

$data = {
    "name" : "Full Name",
    "DisplayName":"St Philip\u0026#39;",
    "grade" : "grade",
    "percentage" : 10,
    {"EventName":"Event Name","maxErrors":10}
};

这是我编写的函数:

function copyData($data, $param1, $param2)
{
    $start = strpos($data, $param1) + strlen($param1);
    $end = strpos($data, $param2, $start);
    $return = substr($data, $start, $end - $start);
    return $return;
}

所以,使用这个函数,它总是在DisplayName处停止...

P粉692052513P粉692052513415 天前631

全部回复(1)我来回复

  • P粉598140294

    P粉5981402942023-09-22 00:33:25

    您的$data似乎是一个格式错误的JSON字符串。

    如果这是由于错误的输入导致的,并且$data是一个正常的JSON字符串,那么我建议您改变策略。

    假设正确的JSON字符串是:

    $data = '{
       "name":"Full Name",
       "DisplayName":"St Philip\u0026#39;",
       "grade":"grade",
       "percentage":10,
       "event":{
          "EventName":"Event Name",
          "maxErrors":10
       }
    }';

    然后您可以将JSON转换为普通的PHP数组并访问其键:

    $decodedData = json_decode ($data, true);
    echo $decodedData['DisplayName'];

    数据结果是一个URL编码的字符串:

    如果您需要一个非URL编码的字符串,只需添加转换:

    echo htmlspecialchars_decode($decoded['DisplayName']);

    您将获得:

    回复
    0
  • 取消回复