本文整理汇总了PHP中Parser::getStripList方法的典型用法代码示例。如果您正苦于以下问题:PHP Parser::getStripList方法的具体用法?PHP Parser::getStripList怎么用?PHP Parser::getStripList使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Parser
的用法示例。
在下文中一共展示了Parser::getStripList方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: preprocessToXml
/**
* @param string $text
* @param int $flags
* @return string
*/
public function preprocessToXml($text, $flags = 0)
{
$forInclusion = $flags & Parser::PTD_FOR_INCLUSION;
$xmlishElements = $this->parser->getStripList();
$enableOnlyinclude = false;
if ($forInclusion) {
$ignoredTags = array('includeonly', '/includeonly');
$ignoredElements = array('noinclude');
$xmlishElements[] = 'noinclude';
if (strpos($text, '<onlyinclude>') !== false && strpos($text, '</onlyinclude>') !== false) {
$enableOnlyinclude = true;
}
} else {
$ignoredTags = array('noinclude', '/noinclude', 'onlyinclude', '/onlyinclude');
$ignoredElements = array('includeonly');
$xmlishElements[] = 'includeonly';
}
$xmlishRegex = implode('|', array_merge($xmlishElements, $ignoredTags));
// Use "A" modifier (anchored) instead of "^", because ^ doesn't work with an offset
$elementsRegex = "~({$xmlishRegex})(?:\\s|\\/>|>)|(!--)~iA";
$stack = new PPDStack();
$searchBase = "[{<\n";
# }
// For fast reverse searches
$revText = strrev($text);
$lengthText = strlen($text);
// Input pointer, starts out pointing to a pseudo-newline before the start
$i = 0;
// Current accumulator
$accum =& $stack->getAccum();
$accum = '<root>';
// True to find equals signs in arguments
$findEquals = false;
// True to take notice of pipe characters
$findPipe = false;
$headingIndex = 1;
// True if $i is inside a possible heading
$inHeading = false;
// True if there are no more greater-than (>) signs right of $i
$noMoreGT = false;
// True to ignore all input up to the next <onlyinclude>
$findOnlyinclude = $enableOnlyinclude;
// Do a line-start run without outputting an LF character
$fakeLineStart = true;
while (true) {
// $this->memCheck();
if ($findOnlyinclude) {
// Ignore all input up to the next <onlyinclude>
$startPos = strpos($text, '<onlyinclude>', $i);
if ($startPos === false) {
// Ignored section runs to the end
$accum .= '<ignore>' . htmlspecialchars(substr($text, $i)) . '</ignore>';
break;
}
$tagEndPos = $startPos + strlen('<onlyinclude>');
// past-the-end
$accum .= '<ignore>' . htmlspecialchars(substr($text, $i, $tagEndPos - $i)) . '</ignore>';
$i = $tagEndPos;
$findOnlyinclude = false;
}
if ($fakeLineStart) {
$found = 'line-start';
$curChar = '';
} else {
# Find next opening brace, closing brace or pipe
$search = $searchBase;
if ($stack->top === false) {
$currentClosing = '';
} else {
$currentClosing = $stack->top->close;
$search .= $currentClosing;
}
if ($findPipe) {
$search .= '|';
}
if ($findEquals) {
// First equals will be for the template
$search .= '=';
}
$rule = null;
# Output literal section, advance input counter
$literalLength = strcspn($text, $search, $i);
if ($literalLength > 0) {
$accum .= htmlspecialchars(substr($text, $i, $literalLength));
$i += $literalLength;
}
if ($i >= $lengthText) {
if ($currentClosing == "\n") {
// Do a past-the-end run to finish off the heading
$curChar = '';
$found = 'line-end';
} else {
# All done
break;
}
//.........这里部分代码省略.........
示例2: tagObj
/**
* Parser function to extension tag adaptor
* @param Parser $parser
* @param PPFrame $frame
* @param PPNode[] $args
* @return string
*/
public static function tagObj($parser, $frame, $args)
{
if (!count($args)) {
return '';
}
$tagName = strtolower(trim($frame->expand(array_shift($args))));
if (count($args)) {
$inner = $frame->expand(array_shift($args));
} else {
$inner = null;
}
$attributes = [];
foreach ($args as $arg) {
$bits = $arg->splitArg();
if (strval($bits['index']) === '') {
$name = trim($frame->expand($bits['name'], PPFrame::STRIP_COMMENTS));
$value = trim($frame->expand($bits['value']));
if (preg_match('/^(?:["\'](.+)["\']|""|\'\')$/s', $value, $m)) {
$value = isset($m[1]) ? $m[1] : '';
}
$attributes[$name] = $value;
}
}
$stripList = $parser->getStripList();
if (!in_array($tagName, $stripList)) {
// we can't handle this tag (at least not now), so just re-emit it as an ordinary tag
$attrText = '';
foreach ($attributes as $name => $value) {
$attrText .= ' ' . htmlspecialchars($name) . '="' . htmlspecialchars($value) . '"';
}
if ($inner === null) {
return "<{$tagName}{$attrText}/>";
}
return "<{$tagName}{$attrText}>{$inner}</{$tagName}>";
}
$params = ['name' => $tagName, 'inner' => $inner, 'attributes' => $attributes, 'close' => "</{$tagName}>"];
return $parser->extensionSubstitution($params, $frame);
}
示例3: tagObj
/**
* Parser function to extension tag adaptor
* @param Parser $parser
* @param PPFrame $frame
* @param array $args
* @return string
*/
public static function tagObj($parser, $frame, $args)
{
if (!count($args)) {
return '';
}
$tagName = strtolower(trim($frame->expand(array_shift($args))));
if (count($args)) {
$inner = $frame->expand(array_shift($args));
} else {
$inner = null;
}
$stripList = $parser->getStripList();
if (!in_array($tagName, $stripList)) {
return '<span class="error">' . wfMessage('unknown_extension_tag', $tagName)->inContentLanguage()->text() . '</span>';
}
$attributes = array();
foreach ($args as $arg) {
$bits = $arg->splitArg();
if (strval($bits['index']) === '') {
$name = trim($frame->expand($bits['name'], PPFrame::STRIP_COMMENTS));
$value = trim($frame->expand($bits['value']));
if (preg_match('/^(?:["\'](.+)["\']|""|\'\')$/s', $value, $m)) {
$value = isset($m[1]) ? $m[1] : '';
}
$attributes[$name] = $value;
}
}
$params = array('name' => $tagName, 'inner' => $inner, 'attributes' => $attributes, 'close' => "</{$tagName}>");
return $parser->extensionSubstitution($params, $frame);
}
示例4: preprocessToObj
/**
* Preprocess some wikitext and return the document tree.
* This is the ghost of Parser::replace_variables().
*
* @param $text String: the text to parse
* @param $flags Integer: bitwise combination of:
* Parser::PTD_FOR_INCLUSION Handle <noinclude>/<includeonly> as if the text is being
* included. Default is to assume a direct page view.
*
* The generated DOM tree must depend only on the input text and the flags.
* The DOM tree must be the same in OT_HTML and OT_WIKI mode, to avoid a regression of bug 4899.
*
* Any flag added to the $flags parameter here, or any other parameter liable to cause a
* change in the DOM tree for a given text, must be passed through the section identifier
* in the section edit link and thus back to extractSections().
*
* The output of this function is currently only cached in process memory, but a persistent
* cache may be implemented at a later date which takes further advantage of these strict
* dependency requirements.
*
* @return PPNode_Hash_Tree
*/
function preprocessToObj($text, $flags = 0)
{
wfProfileIn(__METHOD__);
// Check cache.
global $wgMemc, $wgPreprocessorCacheThreshold;
$cacheable = $wgPreprocessorCacheThreshold !== false && strlen($text) > $wgPreprocessorCacheThreshold;
if ($cacheable) {
wfProfileIn(__METHOD__ . '-cacheable');
$cacheKey = wfMemcKey('preprocess-hash', md5($text), $flags);
$cacheValue = $wgMemc->get($cacheKey);
if ($cacheValue) {
$version = substr($cacheValue, 0, 8);
if (intval($version) == self::CACHE_VERSION) {
$hash = unserialize(substr($cacheValue, 8));
// From the cache
wfDebugLog("Preprocessor", "Loaded preprocessor hash from memcached (key {$cacheKey})");
wfProfileOut(__METHOD__ . '-cacheable');
wfProfileOut(__METHOD__);
return $hash;
}
}
wfProfileIn(__METHOD__ . '-cache-miss');
}
$rules = array('{' => array('end' => '}', 'names' => array(2 => 'template', 3 => 'tplarg'), 'min' => 2, 'max' => 3), '[' => array('end' => ']', 'names' => array(2 => null), 'min' => 2, 'max' => 2));
$forInclusion = $flags & Parser::PTD_FOR_INCLUSION;
$xmlishElements = $this->parser->getStripList();
$enableOnlyinclude = false;
if ($forInclusion) {
$ignoredTags = array('includeonly', '/includeonly');
$ignoredElements = array('noinclude');
$xmlishElements[] = 'noinclude';
if (strpos($text, '<onlyinclude>') !== false && strpos($text, '</onlyinclude>') !== false) {
$enableOnlyinclude = true;
}
} else {
$ignoredTags = array('noinclude', '/noinclude', 'onlyinclude', '/onlyinclude');
$ignoredElements = array('includeonly');
$xmlishElements[] = 'includeonly';
}
$xmlishRegex = implode('|', array_merge($xmlishElements, $ignoredTags));
// Use "A" modifier (anchored) instead of "^", because ^ doesn't work with an offset
$elementsRegex = "~({$xmlishRegex})(?:\\s|\\/>|>)|(!--)~iA";
$stack = new PPDStack_Hash();
$searchBase = "[{<\n";
$revText = strrev($text);
// For fast reverse searches
$i = 0;
# Input pointer, starts out pointing to a pseudo-newline before the start
$accum =& $stack->getAccum();
# Current accumulator
$findEquals = false;
# True to find equals signs in arguments
$findPipe = false;
# True to take notice of pipe characters
$headingIndex = 1;
$inHeading = false;
# True if $i is inside a possible heading
$noMoreGT = false;
# True if there are no more greater-than (>) signs right of $i
$findOnlyinclude = $enableOnlyinclude;
# True to ignore all input up to the next <onlyinclude>
$fakeLineStart = true;
# Do a line-start run without outputting an LF character
while (true) {
//$this->memCheck();
if ($findOnlyinclude) {
// Ignore all input up to the next <onlyinclude>
$startPos = strpos($text, '<onlyinclude>', $i);
if ($startPos === false) {
// Ignored section runs to the end
$accum->addNodeWithText('ignore', substr($text, $i));
break;
}
$tagEndPos = $startPos + strlen('<onlyinclude>');
// past-the-end
$accum->addNodeWithText('ignore', substr($text, $i, $tagEndPos - $i));
$i = $tagEndPos;
$findOnlyinclude = false;
//.........这里部分代码省略.........
示例5: getStripList
public function getStripList()
{
return array_merge((array) parent::getStripList(), array('noinclude', 'includeonly', 'onlyinclude', 'references'));
}