Verzeichnisstruktur phpBB-3.3.15
- Veröffentlicht
- 28.08.2024
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 |
Escaper.php
01 <?php declare(strict_types=1);
02
03 /**
04 * @package s9e\RegexpBuilder
05 * @copyright Copyright (c) 2016-2022 The s9e authors
06 * @license http://www.opensource.org/licenses/mit-license.php The MIT License
07 */
08 namespace s9e\RegexpBuilder;
09
10 use function str_split;
11
12 class Escaper
13 {
14 /**
15 * @var array<string> Characters to escape in a character class
16 */
17 public $inCharacterClass = ['-' => '\\-', '\\' => '\\\\', ']' => '\\]', '^' => '\\^'];
18
19 /**
20 * @var array<string> Characters to escape outside of a character class
21 */
22 public $inLiteral = [
23 '$' => '\\$', '(' => '\\(', ')' => '\\)', '*' => '\\*',
24 '+' => '\\+', '.' => '\\.', '?' => '\\?', '[' => '\\[',
25 '\\' => '\\\\', '^' => '\\^', '{' => '\\{', '|' => '\\|'
26 ];
27
28 /**
29 * @param string $delimiter Delimiter used in the final regexp
30 */
31 public function __construct(string $delimiter = '/')
32 {
33 foreach (str_split($delimiter, 1) as $char)
34 {
35 $this->inCharacterClass[$char] = '\\' . $char;
36 $this->inLiteral[$char] = '\\' . $char;
37 }
38 }
39
40 /**
41 * Escape given character to be used in a character class
42 *
43 * @param string $char Original character
44 * @return string Escaped character
45 */
46 public function escapeCharacterClass(string $char): string
47 {
48 return $this->inCharacterClass[$char] ?? $char;
49 }
50
51 /**
52 * Escape given character to be used outside of a character class
53 *
54 * @param string $char Original character
55 * @return string Escaped character
56 */
57 public function escapeLiteral(string $char): string
58 {
59 return $this->inLiteral[$char] ?? $char;
60 }
61 }