用PHP解析JSON Freebase结果

问题描述

|| 如果这太基础了,我真的很抱歉,但是我真的不知道该怎么做。 我正在使用此jquery自动完成插件:http://devthought.com/wp-content/projects/jquery/textboxlist/Demo/ 编辑:这是我用于自动完成的jQuery代码:
$(function() {
        var t = new $.TextboxList(\'#form_topick_tags\',{unique: true,plugins: {autocomplete: {
                minLength: 2,queryRemote: true,remote: {url: \'autocomplete2.php\'}
            }}});
该插件使用PHP进行自动填充,这是一个示例,它返回以下输出:\“ id,text,null(我不需要html),一些html \”
$response = array();
            $names = array(\'Abraham Lincoln\',\'Adolf Hitler\',\'Agent Smith\',\'Agnus\',\'Etc\');

            // make sure they\'re sorted alphabetically,for binary search tests
            sort($names);

            $search = isset($_REQUEST[\'search\']) ? $_REQUEST[\'search\'] : \'\';

            foreach ($names as $i => $name)
            {
                if (!preg_match(\"/^$search/i\",$name)) continue;
                $filename = str_replace(\' \',\'\',strtolower($name));
                $response[] = array($i,$name,null,\'<img src=\"images/\'. $filename . (file_exists(\'images/\' . $filename . \'.jpg\') ? \'.jpg\' : \'.png\') .\'\" /> \' . $name);
            }

            header(\'Content-type: application/json\');
            echo json_encode($response);
我需要类似的PHP来处理此结果:http://www.freebase.com/private/suggest?prefix=beatles&type_strict=any&category=object&all_types=false&start=0&limit=10&callback= ...成为$ search值的“ beatles”,并获得以下输出:
guid,\"name\",\"name<span>n:type name</span>\"
因此,第一个结果将是:
0,\"The Beatles\",\"The Beatles<span>Band</span>\"
当然,我需要从该PHP查询freebase.com。我的意思是:
        +---------------+         +-----------+        +------------+
        |               |         |           |        |            |
        |  TextboxList  +-------->|   PHP     +------->|  Freebase  |
        |               |         |           |        |            |
        +---------------+         +-----------+        +------+-----+
                                                              |
             JSON                     JSON                    |
          TextboxList   <--------+  freebase       <----------+
这可能吗?谢谢!     

解决方法

        尝试这个:
$response = array();

$search = isset($_REQUEST[\'search\']) ? $_REQUEST[\'search\'] : \'\';

$myJSON = file_get_contents(\'http://www.freebase.com/private/suggest?prefix=\' . urlencode($search));

$musicObj = json_decode($myJSON); // Need to get $myJSON from somewhere like file_get_contents()

foreach ($musicObj->result as $item)
{
    $response[] = array($item->guid,$item->name,null,$item->name . \'<span>\'.$item->{\'n:type\'}->name.\'</span>\');
}

header(\'Content-type: application/json\');
echo json_encode($response);
然后,第一个JSON转义的结果为:
[\"#9202a8c04000641f800000000003ac10\",\"The Beatles\",\"The Beatles<span>Band<\\/span>\"]
但是尽管如此,您确实完全不需要使用PHP来执行此操作。您可以使用JavaScript来完成所有操作,并避免额外的服务器访问。如果向freebase提供
callback
参数,它可以创建JSONP(使用您选择的函数名称,将JSON包装在函数调用中),您可以在jQuery中获得它,然后根据自己的喜好在JavaScript中进行进一步的操作。但是以上是您使用PHP时的原始方法。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...