我正在使用XMLReader解析一个大文件,然后使用XPATH和输出缓冲功能来显示搜索结果。

$reader = new XMLReader;
$reader->open('products.xml');
$dom = new DOMDocument;
$xpath = new DOMXpath($dom);

while ($reader->read() && $reader->name !== 'product') {
continue;
}

while ($reader->name === 'product') {
$node = $dom->importNode($reader->expand(), TRUE);

if ($xpath->evaluate('number(price)', $node) > $price_submitted) {
$nameArray[] = $name;

$category = $xpath->evaluate('string(@category)', $node);
$name = $xpath->evaluate('string(name)', $node);
$price = $xpath->evaluate('number(price)', $node);

这是while循环中输出缓冲开始的地方

ob_start();
echo "Category: " . $category . ". ";
echo "Name: " . $name . ". ";
echo "Price: " . $price . ". ";

echo "<br>";
$output = ob_get_contents();
ob_end_clean();
}
$reader->next('product');
}

然后,在页面的其他区域中将显示搜索结果。 但是仅显示一个搜索结果。 任何建议。

===============>>#1 票数:1 已采纳

$output .= ob_get_contents();

您需要在等于之前加上句点,以将$ output的值与ob_get_contents()合并。

怎么得到的,您只得到最后一个,因为$ output被设置为ob_get_contents而不合并。

  ask by Dean Olsen translate from so

未解决问题?本站智能推荐:

1回复

缓冲或移动PHP数据以显示在网页的不同部分

我正在使用XMLReader解析非常大的XML文件。 while循环用于根据用户输入显示相关数据,以及使用XML值构建数组。 下面的foreach循环使用上面的while循环中构建的数组。 我需要这些值(显示在下面的此foreach循环中)才能在上面的while循环显示相关搜索
1回复

PHP-使用XMLReader从单个解析中进行多个while循环

使用XMLReader,我试图仅通过ONCE解析一个非常大的XML,但是从XML文件的一次解析中使用多个while循环,如下所示。 那可能吗? 仅解析一次大文件似乎可以节省开销和内存消耗。 此while循环正确执行并用值填充数组 此while循环无法正确执行,并且没有回显任何
2回复

PHP-如果元素每条记录具有相似标签,则获取正确的XML值

PHP-如果元素每条记录具有相似标签,则获取正确的XML值 我正在获取以下xml文件: XML档案: ...使用此脚本,我将值输出为csv: PHP文件: ... 像这样: 输出: 但是...如果每个期间记录具有相同的标签定义,我如何获取正确的“期
1回复

PHP-带if语句的XMLReader问题

下面的XMLReader / Xpath代码可以在没有if语句的情况下正常工作(在第二个while循环中)。 放入if语句时,页面甚至不会加载。 关于if语句有什么问题的任何建议? 谢谢! 这是一个名为products.xml的XML文件的位代码:
1回复

PHP-获取xml值并返回条件值

我正在获取一些xml并将其转换为csv,类似于本篇PHP-如果元素每条记录具有相似的标记,则获取正确的XML值 。 如果我在csv中有一个不正确的Date元素,例如'0000-00-00'...,我希望它为空''。 这是我的结构 XML元素: php xpath xmlre
1回复

输出缓冲不正确,进一步的代码

目前,我有一个动态CSS文件,由PHP根据数据库中的结果完成。 目前,我正在使用输出缓冲将动态文件转换为静态文件。 转换为静态文件的过程就像一个超级按钮,但是该操作是从jQuery对话框窗口中调用的。 操作完成后,将打印一小段HTML以关闭对话框。 问题就在这里。 HTML代码被打
2回复

while循环中的XmlReader IsStartElement重复上一行

我有一个结构如下的XML: 从这篇SO文章中 ,我学习了使用IsStartElement子KeywordPerformanceReportColumns 。 我得到的行为是它循环回到第一个Column ,而从未进行到下一个子级。 码 屏幕截图
1回复

PHP-while循环(!feof())不会输出/显示所有内容

我想阅读(回声)一个.txt,文件的一切 。 这是我的代码: 这是我的“ item_sets.txt”: http ://pastebin.com/sxapZGuW 但这并不能回显所有内容(并根据显示的内容和是否回显多少字符来更改显示的内容)。 var_dump()向我展示
1回复

PHP ob_get_length似乎返回不正确的值

我有一个函数应该返回客户端的JSON响应,然后继续处理而不锁定客户端,这似乎工作正常,除非我添加Content-Length标头(我想做的是确保客户端被释放向上)。 功能是: 由于Content-Length错误,除了返回浏览器的JSON字符串被截断之外,这种方法很好。 例如以下字符
1回复

有什么方法可以改善此代码段的可维护性指标和循环复杂性吗? [关闭]

好的,这是我的应用程序某些地方的代码片段。 我需要为此功能提高可维护性指数和圈复杂度: 基本上,我有不同的方法,这些方法具有不同的参数和返回类型,以及在switch case使用的不同字符串集,但是常见的是while loop and the if else conditions 。