function Scanner::columnOffset
Returns the current column of the current line that the tokenizer is at.
Newlines are column 0. The first char after a newline is column 1.
Return value
int The column number.
File
-
vendor/
masterminds/ html5/ src/ HTML5/ Parser/ Scanner.php, line 283
Class
- Scanner
- The scanner scans over a given data input to react appropriately to characters.
Namespace
Masterminds\HTML5\ParserCode
public function columnOffset() {
// Short circuit for the first char.
if (0 === $this->char) {
return 0;
}
// strrpos is weird, and the offset needs to be negative for what we
// want (i.e., the last \n before $this->char). This needs to not have
// one (to make it point to the next character, the one we want the
// position of) added to it because strrpos's behaviour includes the
// final offset byte.
$backwardFrom = $this->char - 1 - strlen($this->data);
$lastLine = strrpos($this->data, "\n", $backwardFrom);
// However, for here we want the length up until the next byte to be
// processed, so add one to the current byte ($this->char).
if (false !== $lastLine) {
$findLengthOf = substr($this->data, $lastLine + 1, $this->char - 1 - $lastLine);
}
else {
// After a newline.
$findLengthOf = substr($this->data, 0, $this->char);
}
return UTF8Utils::countChars($findLengthOf);
}