Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
ConvertCurlyExpressionsInText.php
01 <?php
02
03 /*
04 * @package s9e\TextFormatter
05 * @copyright Copyright (c) 2010-2016 The s9e Authors
06 * @license http://www.opensource.org/licenses/mit-license.php The MIT License
07 */
08 namespace s9e\TextFormatter\Configurator\TemplateNormalizations;
09 use DOMElement;
10 use DOMXPath;
11 use s9e\TextFormatter\Configurator\TemplateNormalization;
12 class ConvertCurlyExpressionsInText extends TemplateNormalization
13 {
14 public function normalize(DOMElement $template)
15 {
16 $dom = $template->ownerDocument;
17 $xpath = new DOMXPath($dom);
18 $query = '//text()[contains(., "{@") or contains(., "{$")]';
19 foreach ($xpath->query($query) as $node)
20 {
21 $parentNode = $node->parentNode;
22 if ($parentNode->namespaceURI === self::XMLNS_XSL)
23 continue;
24 \preg_match_all(
25 '#\\{([$@][-\\w]+)\\}#',
26 $node->textContent,
27 $matches,
28 \PREG_SET_ORDER | \PREG_OFFSET_CAPTURE
29 );
30 $lastPos = 0;
31 foreach ($matches as $m)
32 {
33 $pos = $m[0][1];
34 if ($pos > $lastPos)
35 $parentNode->insertBefore(
36 $dom->createTextNode(
37 \substr($node->textContent, $lastPos, $pos - $lastPos)
38 ),
39 $node
40 );
41 $lastPos = $pos + \strlen($m[0][0]);
42 $parentNode
43 ->insertBefore($dom->createElementNS(self::XMLNS_XSL, 'xsl:value-of'), $node)
44 ->setAttribute('select', $m[1][0]);
45 }
46 $text = \substr($node->textContent, $lastPos);
47 if ($text > '')
48 $parentNode->insertBefore($dom->createTextNode($text), $node);
49 $parentNode->removeChild($node);
50 }
51 }
52 }