4

因此,我运行了许多 solr 实例并提交搜索,我只是将一个快速网站放在一起。发出请求 URL 后,在 php 中,我使用以下内容从 solr 获取 XML 响应:

    $solr_return= file_get_contents($full_request_URL);

现在响应不是简单的 xml 格式,如果您知道我的意思,它就具有 solr-ness。我希望能够解析返回的 xml 并将它们显示在 html 表中的行中。

我一直在网上寻找,有很多不同的想法让我觉得也许我完全不在了,这不是这样做的方法。如果你是我,你会怎么做?

中的 xml$solr_return如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">95</int>
  <lst name="params">
    <str name="indent">true</str>
    <str name="rows">10</str>
    <str name="start">0</str>
    <str name="q">*:*</str>
    <str name="shards">some shards here</str>
  </lst>
</lst>
<result name="response" numFound="2403043" start="0">
  <doc>
    <str name="1">test1</str>
    <str name="2">test2</str>
    <str name="3">test3</str>
  </doc>
  <doc>
    <str name="1">test1</str>
    <str name="2">test2</str>
    <str name="3">test3</str>
  </doc>
</result>
</response>

对于此示例,我想显示一个包含 1、2 和 3 三列以及两行 test1、test2 和 test3 的表。

提前感谢您的帮助。

4

2 回答 2

5

最简单的做法是添加&wt=php到 Solr 请求 URL,然后运行eval()并将结果分配给数组(假设您信任 Solr 服务器不会发回恶意代码)。然后 Solr 结果将只是在常规 PHP 数组中,您可以根据需要对其进行操作。

或者,您可以&wt=json在最后添加,以 JSON 格式获取结果,然后json_decode()在 PHP 中对返回的字符串运行以将其转换为 PHP 数组。

于 2012-07-26T01:15:45.153 回答
0

试试这个:

<?php
$solr_return = file_get_contents($full_request_URL);
$solr_return = simplexml_load_string($solr_return);
$xpath = $solr_return->xpath( '//result/doc' );

$rowCols = array();
if( count( $xpath ) > 0 ) {
    foreach( $xpath as $key => $value ) {
        if( !isset ( $rowCols[ $key ] ) ) {
            $rowCols[ $key ] = '<tr>';
        }

        foreach( $value as $k => $v ) {
            $rowCols[ $key ] .= '<td>' . $v . '</td>';
        }

        $rowCols[ $key ] .= '</tr>';
    }
}     else {
    $rowCols[] = '<tr><td colspan="3"></td></tr>'
    }
$rowCols = implode( '', $rowCols);
?>
<html>
<head></head>
<body>
<table border="0" width="50%" cellpadding="2" cellspacing-="3">
<tbody>
<?php echo $rowCols;?>
</tbody>
</table>
</body>
</html>

希望这可以帮助。

于 2012-07-26T06:48:08.927 回答