* javascript中不会 引入模板文件
所以用js字符串拼接
* LineProcessor.php
<?php
class LineProcessor {
/** @var \SplFileObject */
private $file;
/** @var int */
private $linum;
/** @var callable */
protected $handler;
public function __construct(string $path) {
$this->file = new \SplFileObject($path, 'r');
$this->linum = 0;
}
/**
* 试着读取$limit行, 对每一行执行$callback
* @param callable $callback
* @param int $limit default unlimited
* @return int 实际读取的行数
*/
public function forEach(callable $callback, int $limit = 0) {
// unlimited
if (0===$limit) {
while ($this->file->valid()) {
$line = $this->file->fgets();
call_user_func($callback, $line, $this->linum);
$this->linum++;
}
return 0;
}
for ($i = 0; $i < $limit && $this->file->valid(); $this->linum++) {
$line = $this->file->fgets();
if (!empty($line)) {
call_user_func($callback, $line, $i);
$i++;
}
}
return $i;
}
public function setHandler(callable $cb) {
if (!$cb) {
$cb = function($cur, $i) {
printf("%d %s\n", $i, $cur);
};
}
$this->handler = $cb;
}
public function run() {
$this->forEach($this->handler);
}
}
function __autoload($className) {
include $className.'.php';
}
$p = new \LineProcessor('./ruleform.html');
$p->setHandler(function($cur) {
$cur = trim($cur);
$len = strlen($cur);
if ($len === 0) {
return 0;
}
$cur = "\"" . addslashes($cur) . "\"+";
echo $cur.PHP_EOL;
return $len;
});
$p->run();