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
001 <?php
002
003 /*
004 * This file is part of the Symfony package.
005 *
006 * (c) Fabien Potencier <fabien@symfony.com>
007 *
008 * For the full copyright and license information, please view the LICENSE
009 * file that was distributed with this source code.
010 */
011
012 namespace Symfony\Component\Yaml;
013
014 /**
015 * Escaper encapsulates escaping rules for single and double-quoted
016 * YAML strings.
017 *
018 * @author Matthew Lewinski <matthew@lewinski.org>
019 *
020 * @internal
021 */
022 class Escaper
023 {
024 // Characters that would cause a dumped string to require double quoting.
025 const REGEX_CHARACTER_TO_ESCAPE = "[\\x00-\\x1f]|\x7f|\xc2\x85|\xc2\xa0|\xe2\x80\xa8|\xe2\x80\xa9";
026
027 // Mapping arrays for escaping a double quoted string. The backslash is
028 // first to ensure proper escaping because str_replace operates iteratively
029 // on the input arrays. This ordering of the characters avoids the use of strtr,
030 // which performs more slowly.
031 private static $escapees = ['\\', '\\\\', '\\"', '"',
032 "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07",
033 "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f",
034 "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17",
035 "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f",
036 "\x7f",
037 "\xc2\x85", "\xc2\xa0", "\xe2\x80\xa8", "\xe2\x80\xa9",
038 ];
039 private static $escaped = ['\\\\', '\\"', '\\\\', '\\"',
040 '\\0', '\\x01', '\\x02', '\\x03', '\\x04', '\\x05', '\\x06', '\\a',
041 '\\b', '\\t', '\\n', '\\v', '\\f', '\\r', '\\x0e', '\\x0f',
042 '\\x10', '\\x11', '\\x12', '\\x13', '\\x14', '\\x15', '\\x16', '\\x17',
043 '\\x18', '\\x19', '\\x1a', '\\e', '\\x1c', '\\x1d', '\\x1e', '\\x1f',
044 '\\x7f',
045 '\\N', '\\_', '\\L', '\\P',
046 ];
047
048 /**
049 * Determines if a PHP value would require double quoting in YAML.
050 *
051 * @param string $value A PHP value
052 *
053 * @return bool True if the value would require double quotes
054 */
055 public static function requiresDoubleQuoting($value)
056 {
057 return 0 < preg_match('/'.self::REGEX_CHARACTER_TO_ESCAPE.'/u', $value);
058 }
059
060 /**
061 * Escapes and surrounds a PHP value with double quotes.
062 *
063 * @param string $value A PHP value
064 *
065 * @return string The quoted, escaped string
066 */
067 public static function escapeWithDoubleQuotes($value)
068 {
069 return sprintf('"%s"', str_replace(self::$escapees, self::$escaped, $value));
070 }
071
072 /**
073 * Determines if a PHP value would require single quoting in YAML.
074 *
075 * @param string $value A PHP value
076 *
077 * @return bool True if the value would require single quotes
078 */
079 public static function requiresSingleQuoting($value)
080 {
081 // Determines if a PHP value is entirely composed of a value that would
082 // require single quoting in YAML.
083 if (\in_array(strtolower($value), ['null', '~', 'true', 'false', 'y', 'n', 'yes', 'no', 'on', 'off'])) {
084 return true;
085 }
086
087 // Determines if the PHP value contains any single characters that would
088 // cause it to require single quoting in YAML.
089 return 0 < preg_match('/[ \s \' " \: \{ \} \[ \] , & \* \# \?] | \A[ \- ? | < > = ! % @ ` ]/x', $value);
090 }
091
092 /**
093 * Escapes and surrounds a PHP value with single quotes.
094 *
095 * @param string $value A PHP value
096 *
097 * @return string The quoted, escaped string
098 */
099 public static function escapeWithSingleQuotes($value)
100 {
101 return sprintf("'%s'", str_replace('\'', '\'\'', $value));
102 }
103 }
104