我想问你一些已知的 PHP 库,它们可以帮助我解析*.txt
文件中的句子。我必须解析太大的文本文件,所以我决定做一个流解析器(逐句)。
我认为按句子迭代文件会很漂亮,例如:
foreach (new SentenceIterator("./data/huge.txt") as $sentence)
{
// do something...
}
主要思想是文件应该完全加载到内存中。
我试过的:
$f = fopen("./data/huge.txt", "r");
$dataBytes = 64;
$buffer = '';
while (!feof($f))
{
$data = fread($f, $dataBytes);
$dotPosition = strpos($data, '.');
if (false !== $dotPosition)
{
$sentence = $buffer . substr($data, 0, $dotPosition);
// correct cursor position
fseek($f, -1 * $dotPosition, SEEK_CUR);
// clear buffer
$buffer = '';
continue;
}
$buffer .= $data;
}
但在这种情况下,我得到了损坏(中断)的句子。
有人可以建议我一些现有的库或者如何修复我的代码吗?
提前谢谢。