function next_search($characters, $callback = true)
{
$this->token_start = $this->pos;
if (!is_array($characters)) {
$characters = array_fill_keys(str_split($characters), true);
}
while (++$this->pos < $this->size) {
if (isset($characters[$this->doc[$this->pos]])) {
if ($callback && isset($this->char_map[$this->doc[$this->pos]])) {
if (is_string($this->char_map[$this->doc[$this->pos]])) {
return $this->token = $this->{$this->char_map[$this->doc[$this->pos]]}();
} else {
return $this->token = $this->char_map[$this->doc[$this->pos]];
}
} else {
return $this->token = self::TOK_UNKNOWN;
}
} else {
$this->parse_linebreak();
}
}
return $this->token = self::TOK_NULL;
}