[ Index ] |
PHP Cross Reference of phpBB-3.2.11-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * @package s9e\TextFormatter 5 * @copyright Copyright (c) 2010-2019 The s9e Authors 6 * @license http://www.opensource.org/licenses/mit-license.php The MIT License 7 */ 8 namespace s9e\TextFormatter\Plugins\Litedown\Parser\Passes; 9 use s9e\TextFormatter\Plugins\Litedown\Parser\LinkAttributesSetter; 10 class Images extends AbstractPass 11 { 12 use LinkAttributesSetter; 13 public function parse() 14 { 15 $pos = $this->text->indexOf(' !== \false) 19 $this->parseInlineImages(); 20 if ($this->text->hasReferences) 21 $this->parseReferenceImages(); 22 } 23 protected function addImageTag($startPos, $endPos, $endLen, $linkInfo, $alt) 24 { 25 $tag = $this->parser->addTagPair('IMG', $startPos, 2, $endPos, $endLen); 26 $this->setLinkAttributes($tag, $linkInfo, 'src'); 27 $tag->setAttribute('alt', $this->text->decode($alt)); 28 $this->text->overwrite($startPos, $endPos + $endLen - $startPos); 29 } 30 protected function parseInlineImages() 31 { 32 \preg_match_all( 33 '/!\\[(?:[^\\x17[\\]]|\\[[^\\x17[\\]]*\\])*\\]\\(( *(?:[^\\x17\\s()]|\\([^\\x17\\s()]*\\))*(?=[ )]) *(?:"[^\\x17]*?"|\'[^\\x17]*?\'|\\([^\\x17)]*\\))? *)\\)/', 34 $this->text, 35 $matches, 36 \PREG_OFFSET_CAPTURE | \PREG_SET_ORDER 37 ); 38 foreach ($matches as $m) 39 { 40 $linkInfo = $m[1][0]; 41 $startPos = $m[0][1]; 42 $endLen = 3 + \strlen($linkInfo); 43 $endPos = $startPos + \strlen($m[0][0]) - $endLen; 44 $alt = \substr($m[0][0], 2, \strlen($m[0][0]) - $endLen - 2); 45 $this->addImageTag($startPos, $endPos, $endLen, $linkInfo, $alt); 46 } 47 } 48 protected function parseReferenceImages() 49 { 50 \preg_match_all( 51 '/!\\[((?:[^\\x17[\\]]|\\[[^\\x17[\\]]*\\])*)\\](?: ?\\[([^\\x17[\\]]+)\\])?/', 52 $this->text, 53 $matches, 54 \PREG_OFFSET_CAPTURE | \PREG_SET_ORDER 55 ); 56 foreach ($matches as $m) 57 { 58 $startPos = $m[0][1]; 59 $endPos = $startPos + 2 + \strlen($m[1][0]); 60 $endLen = 1; 61 $alt = $m[1][0]; 62 $id = $alt; 63 if (isset($m[2][0], $this->text->linkReferences[$m[2][0]])) 64 { 65 $endLen = \strlen($m[0][0]) - \strlen($alt) - 2; 66 $id = $m[2][0]; 67 } 68 elseif (!isset($this->text->linkReferences[$id])) 69 continue; 70 $this->addImageTag($startPos, $endPos, $endLen, $this->text->linkReferences[$id], $alt); 71 } 72 } 73 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Nov 11 20:33:01 2020 | Cross-referenced by PHPXref 0.7.1 |