我有一个项目,我必须处理在线营销平台提供的API,以便注册用户和其他典型(以及此处无关紧要的)操作。
今天他们向我发送了API文档,我很困惑,因为它指定字面上“...它返回一个返回JSON的HTML ......”。它显示了一个这样的例子:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="XX:pagetag" content="" />
<meta name="XX:flowtag" content="" />
</head>
<body leftmargin='0' rightmargin='0' topmargin='0' bottommargin='0' bgcolor='#FFFFFF'>
<RESULT>[{ "userid": 1, "status": "OK" }]</RESULT>
</body>
</html>
所以我有两个问题:
为什么有人会以这种方式构建API?这对我来说真的没有意义。以什么方式比使用适当的JSON头只返回JSON更好?也许我一直在想念......
使用PHP,这是解析此响应并获取实际JSON的最佳方法吗?我在SO中阅读了多个answers和评论,因此不鼓励使用正则表达式解析HTML,但到目前为止,这是我能想到的唯一方法。我试过了:
// This will be a CURL call:
$response = file_get_contents('./example-response.html');
$regexp = '/<RESULT>(.*)<\/RESULT>/';
$matches = [];
preg_match($regexp, $response, $matches);
print_r($matches);
顺便说一句,这段代码在我的MAMP服务器中不起作用,但它在https://www.functions-online.com/preg_match.html ...
任何建议都将不胜感激。谢谢!