[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/vendor/s9e/regexp-builder/src/ -> Escaper.php (source)

   1  <?php declare(strict_types=1);
   2  
   3  /**
   4  * @package   s9e\RegexpBuilder
   5  * @copyright Copyright (c) 2016-2022 The s9e authors
   6  * @license   http://www.opensource.org/licenses/mit-license.php The MIT License
   7  */
   8  namespace s9e\RegexpBuilder;
   9  
  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  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1