使用strpos() PHP函数进行信息检索和裁剪时遇到的问题
P粉692052513
P粉692052513 2023-09-21 10:35:25
0
1
661

我从一个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粉692052513
P粉692052513

全部回复(1)
P粉598140294

您的$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']);

您将获得:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板