gpt4 book ai didi

PHP - 在指向 zip 文件的文件句柄中查找?

转载 作者:可可西里 更新时间:2023-11-01 13:26:17 26 4
gpt4 key购买 nike

我想打印 zip 存档中文件的特定行(比如第 200 行)。我正在尝试以下操作:

$file = new SplFileObject("zip://archive.zip#file.txt");
$file->seek(200);
echo $file->key() . "\n";
echo $file->current();

但是我明白了

PHP Warning:  SplFileObject::seek(): stream does not support seeking in script.php on line 2
PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Cannot rewind file zip://archive.zip#file.txt' in script.php:2

如果我解压文件并创建带有参数 "file.txt"SplFileObject,它可以正常工作。是否在任何地方记录了搜索对压缩文件不起作用?我找不到它。还是我做错了什么?谢谢。

最佳答案

好问题。您想要的行为已通过您使用的语法清楚地表达出来。我认为这是一个错误。您可能可以在 http://bugs.php.net 报告它.流应该在内部处理,不倒带并缓存。

请注意!使用 SplFileObject 的解决方案非常疯狂。

需要NoRewind 来禁止倒带。那么就需要Cache,将流内容存储在内部,使其可寻。然后需要 LimitIterator 寻找到第 200 行。

开始吧:

$obj      = new SplFileObject("zip://archive.zip#file.txt");
$norewind = new NoRewindIterator($obj);
$caching = new CachingIterator($norewind);
$limit = new LimitIterator($caching, 200, 1);

foreach ($limit as $i => $line)
{
printf("%03d: %s", $i, $line);
}

关于PHP - 在指向 zip 文件的文件句柄中查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24976147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com