⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 injector.php

📁 很棒的在线教学系统
💻 PHP
字号:
<?php/** * Injects tokens into the document while parsing for well-formedness. * This enables "formatter-like" functionality such as auto-paragraphing, * smiley-ification and linkification to take place. *  * @todo Allow injectors to request a re-run on their output. This  *       would help if an operation is recursive. */class HTMLPurifier_Injector{        /**     * Advisory name of injector, this is for friendly error messages     */    var $name;        /**     * Amount of tokens the injector needs to skip + 1. Because     * the decrement is the first thing that happens, this needs to     * be one greater than the "real" skip count.     */    var $skip = 1;        /**     * Instance of HTMLPurifier_HTMLDefinition     */    var $htmlDefinition;        /**     * Reference to CurrentNesting variable in Context. This is an array     * list of tokens that we are currently "inside"     */    var $currentNesting;        /**     * Reference to InputTokens variable in Context. This is an array     * list of the input tokens that are being processed.     */    var $inputTokens;        /**     * Reference to InputIndex variable in Context. This is an integer     * array index for $this->inputTokens that indicates what token     * is currently being processed.     */    var $inputIndex;        /**     * Array of elements and attributes this injector creates and therefore     * need to be allowed by the definition. Takes form of     * array('element' => array('attr', 'attr2'), 'element2')     */    var $needed = array();        /**     * Prepares the injector by giving it the config and context objects:     * this allows references to important variables to be made within     * the injector. This function also checks if the HTML environment     * will work with the Injector: if p tags are not allowed, the     * Auto-Paragraphing injector should not be enabled.     * @param $config Instance of HTMLPurifier_Config     * @param $context Instance of HTMLPurifier_Context     * @return Boolean false if success, string of missing needed element/attribute if failure     */    function prepare($config, &$context) {        $this->htmlDefinition = $config->getHTMLDefinition();        // perform $needed checks        foreach ($this->needed as $element => $attributes) {            if (is_int($element)) $element = $attributes;            if (!isset($this->htmlDefinition->info[$element])) return $element;            if (!is_array($attributes)) continue;            foreach ($attributes as $name) {                if (!isset($this->htmlDefinition->info[$element]->attr[$name])) return "$element.$name";            }        }        $this->currentNesting =& $context->get('CurrentNesting');        $this->inputTokens    =& $context->get('InputTokens');        $this->inputIndex     =& $context->get('InputIndex');        return false;    }        /**     * Tests if the context node allows a certain element     * @param $name Name of element to test for     * @return True if element is allowed, false if it is not     */    function allowsElement($name) {        if (!empty($this->currentNesting)) {            $parent_token = array_pop($this->currentNesting);            $this->currentNesting[] = $parent_token;            $parent = $this->htmlDefinition->info[$parent_token->name];        } else {            $parent = $this->htmlDefinition->info_parent_def;        }        if (!isset($parent->child->elements[$name]) || isset($parent->excludes[$name])) {            return false;        }        return true;    }        /**     * Handler that is called when a text token is processed     */    function handleText(&$token) {}        /**     * Handler that is called when a start or empty token is processed     */    function handleElement(&$token) {}        /**     * Notifier that is called when an end token is processed     * @note This differs from handlers in that the token is read-only     */    function notifyEnd($token) {}        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -