/** * Convenience function for parsing. */ protected function parse($string) { $treeBuilder = new DOMTreeBuilder(); $scanner = new Scanner(new StringInputStream($string)); $parser = new Tokenizer($scanner, $treeBuilder); $parser->parse(); return $treeBuilder->document(); }
/** * Parse an input stream. * * Lower-level loading function. This requires an input stream instead * of a string, file, or resource. */ public function parse(\Masterminds\Html5\Parser\InputStream $input, array $options = array()) { $this->errors = array(); $events = new DOMTreeBuilder(false, array_merge($this->getOptions(), $options)); $scanner = new Scanner($input); $parser = new Tokenizer($scanner, $events); $parser->parse(); $this->errors = $events->getErrors(); return $events->document(); }
public function testInstructionProcessor() { $string = '<!DOCTYPE html><html><?foo bar ?></html>'; $treeBuilder = new DOMTreeBuilder(); $is = new InstructionProcessorMock(); $treeBuilder->setInstructionProcessor($is); $input = new StringInputStream($string); $scanner = new Scanner($input); $parser = new Tokenizer($scanner, $treeBuilder); $parser->parse(); $dom = $treeBuilder->document(); $div = $dom->getElementsByTagName('div')->item(0); $this->assertEquals(1, $is->count); $this->assertEquals('foo', $is->name); $this->assertEquals('bar ', $is->data); $this->assertEquals('div', $div->tagName); $this->assertEquals('foo', $div->textContent); }