我刚注意到,除了这个函数之外,所有 readline 函数在我的 php.exe (PHP 7, Cygwin) 中都可用。如果能有它,就可以筛选重复的行。
所以为了模拟它,我在一个数组中保留了历史记录的工作副本(是的,额外的代码/数据,但有一些方法可以防止历史记录变得太大)。
加载类似于
<?php
readline_read_history(HISTFILE);
$hist = file(HISTFILE,FILE_IGNORE_NEW_LINES);
array_shift($hist);
?>
添加类似于
<?php
if (!in_array($line,$hist)) {
$hist[] = $line;
readline_add_history($line);
}
?>
(人们可能只想检查最后一个条目是否相同)。