Вход Регистрация
Файл: vendor/vlucas/phpdotenv/src/Util/Regex.php
Строк: 117
<?php

declare(strict_types=1);

namespace 
DotenvUtil;

use 
GrahamCampbellResultTypeError;
use 
GrahamCampbellResultTypeSuccess;

/**
 * @internal
 */
final class Regex
{
    
/**
     * This class is a singleton.
     *
     * @codeCoverageIgnore
     *
     * @return void
     */
    
private function __construct()
    {
        
//
    
}

    
/**
     * Perform a preg match, wrapping up the result.
     *
     * @param string $pattern
     * @param string $subject
     *
     * @return GrahamCampbellResultTypeResult<bool,string>
     */
    
public static function matches(string $patternstring $subject)
    {
        return 
self::pregAndWrap(static function (string $subject) use ($pattern) {
            return @
preg_match($pattern$subject) === 1;
        }, 
$subject);
    }

    
/**
     * Perform a preg match all, wrapping up the result.
     *
     * @param string $pattern
     * @param string $subject
     *
     * @return GrahamCampbellResultTypeResult<int,string>
     */
    
public static function occurrences(string $patternstring $subject)
    {
        return 
self::pregAndWrap(static function (string $subject) use ($pattern) {
            return (int) @
preg_match_all($pattern$subject);
        }, 
$subject);
    }

    
/**
     * Perform a preg replace callback, wrapping up the result.
     *
     * @param string   $pattern
     * @param callable $callback
     * @param string   $subject
     * @param int|null $limit
     *
     * @return GrahamCampbellResultTypeResult<string,string>
     */
    
public static function replaceCallback(string $pattern, callable $callbackstring $subject, ?int $limit null)
    {
        return 
self::pregAndWrap(static function (string $subject) use ($pattern$callback$limit) {
            return (string) @
preg_replace_callback($pattern$callback$subject$limit ?? -1);
        }, 
$subject);
    }

    
/**
     * Perform a preg split, wrapping up the result.
     *
     * @param string $pattern
     * @param string $subject
     *
     * @return GrahamCampbellResultTypeResult<string[],string>
     */
    
public static function split(string $patternstring $subject)
    {
        return 
self::pregAndWrap(static function (string $subject) use ($pattern) {
            
/** @var string[] */
            
return (array) @preg_split($pattern$subject);
        }, 
$subject);
    }

    
/**
     * Perform a preg operation, wrapping up the result.
     *
     * @template V
     *
     * @param callable(string):V $operation
     * @param string             $subject
     *
     * @return GrahamCampbellResultTypeResult<V,string>
     */
    
private static function pregAndWrap(callable $operationstring $subject)
    {
        
$result $operation($subject);

        if (
preg_last_error() !== PREG_NO_ERROR) {
            
/** @var GrahamCampbellResultTypeResult<V,string> */
            
return Error::create(preg_last_error_msg());
        }

        
/** @var GrahamCampbellResultTypeResult<V,string> */
        
return Success::create($result);
    }
}
Онлайн: 4
Реклама