Вход Регистрация
Файл: forsoc.ru/vendor/symfony/yaml/Symfony/Component/Yaml/Escaper.php
Строк: 95
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentYaml;

/**
 * Escaper encapsulates escaping rules for single and double-quoted
 * YAML strings.
 *
 * @author Matthew Lewinski <matthew@lewinski.org>
 */
class Escaper
{
    
// Characters that would cause a dumped string to require double quoting.
    
const REGEX_CHARACTER_TO_ESCAPE "[\x00-\x1f]|xc2x85|xc2xa0|xe2x80xa8|xe2x80xa9";

    
// Mapping arrays for escaping a double quoted string. The backslash is
    // first to ensure proper escaping because str_replace operates iteratively
    // on the input arrays. This ordering of the characters avoids the use of strtr,
    // which performs more slowly.
    
private static $escapees = array('\', '\\', '\"', '"',
                                     "x00",  "x01",  "x02",  "x03",  "x04",  "x05",  "x06",  "x07",
                                     "x08",  "x09",  "x0a",  "x0b",  "x0c",  "x0d",  "x0e",  "x0f",
                                     "x10",  "x11",  "x12",  "x13",  "x14",  "x15",  "x16",  "x17",
                                     "x18",  "x19",  "x1a",  "x1b",  "x1c",  "x1d",  "x1e",  "x1f",
                                     "xc2x85", "xc2xa0", "xe2x80xa8", "xe2x80xa9");
    private static $escaped = array('
\\', '\"', '\\', '\"',
                                     '\0',   '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\a',
                                     '\b',   '\t',   '\n',   '\v',   '\f',   '\r',   '\x0e', '\x0f',
                                     '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
                                     '\x18', '\x19', '\x1a', '\e',   '\x1c', '\x1d', '\x1e', '\x1f',
                                     '\N', '\_', '\L', '\P');

    /**
     * Determines if a PHP value would require double quoting in YAML.
     *
     * @param string 
$value A PHP value
     *
     * @return bool True if the value would require double quotes.
     */
    public static function requiresDoubleQuoting(
$value)
    {
        return preg_match('/'.self::REGEX_CHARACTER_TO_ESCAPE.'/u', 
$value);
    }

    /**
     * Escapes and surrounds a PHP value with double quotes.
     *
     * @param string 
$value A PHP value
     *
     * @return string The quoted, escaped string
     */
    public static function escapeWithDoubleQuotes(
$value)
    {
        return sprintf('"
%s"', str_replace(self::$escapees, self::$escaped$value));
    }

    /**
     * Determines if a PHP value would require single quoting in YAML.
     *
     * @param string 
$value A PHP value
     *
     * @return bool True if the value would require single quotes.
     */
    public static function requiresSingleQuoting(
$value)
    {
        // Determines if a PHP value is entirely composed of a value that would
        // require single quoting in YAML.
        if (in_array(strtolower(
$value), array('null', '~', 'true', 'false', 'y', 'n', 'yes', 'no', 'on', 'off'))) {
            return true;
        }

        // Determines if the PHP value contains any single characters that would
        // cause it to require single quoting in YAML.
        return preg_match('/[ s ' " 
: { } [ ] , & * # ?] | A[ - ? | < > = ! % @ ` ]/x', $value);
    
}

    
/**
     * Escapes and surrounds a PHP value with single quotes.
     *
     * @param string $value A PHP value
     *
     * @return string The quoted, escaped string
     */
    
public static function escapeWithSingleQuotes($value)
    {
        return 
sprintf("'%s'"str_replace(''', '''', $value));
    }
}
Онлайн: 3
Реклама