当前位置: 首页 > 面试题库 >

在PHP中提取JSONP结果集

傅元章
2023-03-14
问题内容

我希望能够获取此url的返回数据。我什至可以在PHP中做到这一点?

    <?php
    $yahooSS = "http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=yahoo&callback=YAHOO.Finance.SymbolSuggest.ssCallback";

    $yss = fopen($yahooSS,"r");
    ....

我相信这会返回Javascript回调函数,但是我不知道从哪里开始。

以下是返回的结果集的示例。

YAHOO.Finance.SymbolSuggest.ssCallback({"ResultSet":{"Query":"yahoo","Result":[{"symbol":"YHOO","name": "Yahoo! Inc.","exch": "NMS","type": "S","exchDisp":"NASDAQ","typeDisp":"Equity"},{"symbol":"YAHOY.PK","name": "YAHOO JAPAN CORP","exch": "PNK","type": "S","exchDisp":"Pink Sheets","typeDisp":"Equity"},{"symbol":"ETD","name": "Citigroup Inc. ELKS On Yahoo","exch": "PCX","type": "S","typeDisp":"Equity"},{"symbol":"YOJ.BE","name": "YAHOO JAPAN","exch": "BER","type": "S","exchDisp":"Berlin","typeDisp":"Equity"},{"symbol":"YHO.SG","name": "YAHOO","exch": "STU","type": "S","exchDisp":"Stuttgart","typeDisp":"Equity"},{"symbol":"YAHOF.PK","name": "YAHOO JAPAN CORP","exch": "PNK","type": "S","exchDisp":"Pink Sheets","typeDisp":"Equity"},{"symbol":"YHO.HM","name": "YAHOO","exch": "HAM","type": "S","exchDisp":"Hamburg","typeDisp":"Equity"},{"symbol":"YOJ.DE","name": "YAHOO JAPAN","exch": "GER","type": "S","exchDisp":"XETRA","typeDisp":"Equity"},{"symbol":"YHO.DU","name": "YAHOO","exch": "DUS","type": "S","exchDisp":"Dusseldorf Stock Exchange","typeDisp":"Equity"},{"symbol":"YHOO.BA","name": "YAHOO  INC.","exch": "BUE","type": "S","exchDisp":"Buenos Aires","typeDisp":"Equity"}]}})

任何帮助是极大的赞赏。


问题答案:

正确,它是 带有填充的JSON。
您必须删除函数名称(和括号),然后可以使用解析JSON json_decode

我曾经为此写过一个函数:

function jsonp_decode($jsonp, $assoc = false) { // PHP 5.3 adds depth as third parameter to json_decode
    if($jsonp[0] !== '[' && $jsonp[0] !== '{') { // we have JSONP
       $jsonp = substr($jsonp, strpos($jsonp, '('));
    }
    return json_decode(trim($jsonp,'();'), $assoc);
}

用法:

$data = jsonp_decode($response);


 类似资料:
  • 我得到异常后,我适当的结果criteria.unique结果()对象报价。目的查询-从数据库Oracle的表“报价”中获得随机结果 org.hibernate.exception.SQLGrammarExc0019:无法提取org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelega

  • 问题内容: 这个可以吗 ? 然后在尝试打印时 我有一个错误 问题答案: 尝试mysql_fetch_field函数。 例如:

  • 我想得到分数和日期列在给定范围内的条目数,按分数间隔分组。分数间隔由给定的粒度决定。所以我想回答的问题是:在给定的时间段内,有多少结果的分数在0-25、26-50、56-75等之间。。。在这种情况下,粒度为25。 以下本机SQL查询将生成所需的结果: 我想用自己的查询定义一个查询方法,使用注释。 它是一个简单的bean,它不是一个实体。 我得到以下例外: 组织。springframework。刀。

  • 问题内容: 阅读完SQL注入攻击后,我只是在编辑搜索脚本。我正在尝试使用PDO而不是常规的mysql连接从脚本中获得相同的功能。因此,我一直在阅读有关PDO的其他文章,但不确定。这两个脚本会提供相同的功能吗? 使用PDO: 使用常规mysql: 我继续使用常规示例 从数据库创建匹配结果数组。我该如何使用PDO? 问题答案: 看一下方法。您也可以在迭代器模式中使用。 来自PHP文档的的代码示例: 结

  • 我检查了serenity文档中提取的测试结果,下面是代码,它不起作用 结果格式格式 = 结果格式.XML;TestOutcomes results = TestOutcomeLoader.loadTestOutcomes().inFormat(format) 尝试使用以下代码及其工作原理, OutcomeFormat format = OutcomeFormat。JSONTestOutcomeLo

  • 问题内容: 我正在尝试通过HTTP将SHA256哈希字符串发送到服务器,在服务器上我想通过执行SHA256哈希并验证两者的匹配来进行身份验证。出于测试目的,我使用相同的字符串,但是结果不匹配。可以使用base64_encode调用的默认编码方案吗?谢谢。 在PHP中,我正在做: 在Go中,我正在做 问题答案: 过了一会儿我就知道了。我都将其标准化为十六进制编码。为此,我将代码更改如下: PHP: